다음과 같은 알고리즘 문제가 있습니다.
Watson-Crick 회 문인 DNA 문자열 인식의 공간 튜링 복잡도를 결정합니다.
Watson-Crick 회문은 역 보체가 원래 문자열 인 문자열입니다. 보완 DNA 영감 문자 와이즈 정의된다 : A는 T의 보수이며, C는 ACGT WC-회문위한 G. 간단한 예를 보완한다.
나는 이것을 해결하는 두 가지 방법을 생각해 냈습니다.
하나는 공간이 필요 합니다.
- 기계가 입력을 읽고 나면. 입력 테이프는 작업 테이프에 역순으로 복사해야합니다.
- 그런 다음 기계는 왼쪽에서 입력 및 작업 테이프를 읽고 각 항목을 비교하여 작업 테이프의 셀이 입력의 셀을 보완하는지 확인합니다. 이를 위해서는 공간 이 필요 합니다.
다른 하나는 필요 공간.
- 입력을 읽는 동안. 입력 테이프의 항목 수를 센다.
- 입력 테이프가 읽 히면
- 편지의 보완 물을 작업 테이프에 복사하십시오.
- 작업 테이프의 끝에 문자 L을 복사
- (루프 포인트) 카운터가 0이면 작업 테이프를 지우고 예라고 쓴 다음 중지
- 입력 테이프가 L을 읽는 경우
- 카운터가 나타내는 횟수만큼 입력 헤드를 왼쪽으로 이동하십시오 (두 번째 카운터 필요).
- 입력 테이프가 R을 읽는 경우
- 카운터가 나타내는 횟수만큼 입력 헤드를 오른쪽으로 이동합니다 (두 번째 카운터 필요).
- 작업 테이프의 값을 보유한 셀이 입력 테이프의 현재 셀과 일치하는 경우
- 카운터를 2 씩 줄입니다
- R 또는 L이 각각 작업 테이프에 있는지에 따라 하나를 왼쪽 또는 오른쪽으로 이동
- 현재 L 또는 R 대신 L 또는 R 보완을 작업 테이프에 복사
- 루프를 계속
- 값이 일치하지 않으면 작업 테이프를 지우고 아니오를 쓴 다음 중지하십시오.
내 문제
첫 번째는 선형 시간과 공간이 모두 필요합니다. 두 번째는 가 필요합니다
내가 혼란스러운 이유
나는 두 번째 방법이 시간면에서 더 좋기 때문에 최선의 선택이라고 말하는 경향이 있지만, 그 대답은 운이 좋으면서 알고리즘을 생각해 낼 때만 나옵니다. 무언가의 공간 복잡성을주고 싶다면 올바른 알고리즘을 제시하는 데 운이 필요하지 않습니다. 뭔가 빠졌습니까? 공간 복잡성에 답하기 위해 문제에 대한 해결책을 제시해야합니까?