Watson-Crick 회문 인식의 공간 복잡성


10

다음과 같은 알고리즘 문제가 있습니다.

Watson-Crick 회 문인 DNA 문자열 인식의 공간 튜링 복잡도를 결정합니다.

Watson-Crick 회문은 역 보체가 원래 문자열 인 문자열입니다. 보완 DNA 영감 문자 와이즈 정의된다 : A는 T의 보수이며, C는 ACGT WC-회문위한 G. 간단한 예를 보완한다.

나는 이것을 해결하는 두 가지 방법을 생각해 냈습니다.

하나는 공간이 필요 합니다.O(n)

  • 기계가 입력을 읽고 나면. 입력 테이프는 작업 테이프에 역순으로 복사해야합니다.
  • 그런 다음 기계는 왼쪽에서 입력 및 작업 테이프를 읽고 각 항목을 비교하여 작업 테이프의 셀이 입력의 셀을 보완하는지 확인합니다. 이를 위해서는 공간 이 필요 합니다.O(n)

다른 하나는 필요 공간.O(logn)

  • 입력을 읽는 동안. 입력 테이프의 항목 수를 센다.
  • 입력 테이프가 읽 히면
    • 편지의 보완 물을 작업 테이프에 복사하십시오.
    • 작업 테이프의 끝에 문자 L을 복사
  • (루프 포인트) 카운터가 0이면 작업 테이프를 지우고 예라고 쓴 다음 중지
  • 입력 테이프가 L을 읽는 경우
    • 카운터가 나타내는 횟수만큼 입력 헤드를 왼쪽으로 이동하십시오 (두 번째 카운터 필요).
  • 입력 테이프가 R을 읽는 경우
    • 카운터가 나타내는 횟수만큼 입력 헤드를 오른쪽으로 이동합니다 (두 번째 카운터 필요).
  • 작업 테이프의 값을 보유한 셀이 입력 테이프의 현재 셀과 일치하는 경우
    • 카운터를 2 씩 줄입니다
    • R 또는 L이 각각 작업 테이프에 있는지에 따라 하나를 왼쪽 또는 오른쪽으로 이동
    • 현재 L 또는 R 대신 L 또는 R 보완을 작업 테이프에 복사
    • 루프를 계속
  • 값이 일치하지 않으면 작업 테이프를 지우고 아니오를 쓴 다음 중지하십시오.

2logn+2

내 문제

첫 번째는 선형 시간과 공간이 모두 필요합니다. 두 번째는 가 필요합니다n22logn

내가 혼란스러운 이유

나는 두 번째 방법이 시간면에서 더 좋기 때문에 최선의 선택이라고 말하는 경향이 있지만, 그 대답은 운이 좋으면서 알고리즘을 생각해 낼 때만 나옵니다. 무언가의 공간 복잡성을주고 싶다면 올바른 알고리즘을 제시하는 데 운이 필요하지 않습니다. 뭔가 빠졌습니까? 공간 복잡성에 답하기 위해 문제에 대한 해결책을 제시해야합니까?


알고리즘에 의사 코드를 제공하면 문제가 훨씬 더 좋을 것이라고 생각합니다. 봐 여기 서식에 도움.
Raphael

답변:


8

DSPACE(O(1))=REGchar

문제가 특정 공간 복잡성을 가지고 있음을 보여주기 위해서는 일반적으로 해당 공간 복잡성을 갖는 알고리즘이 필요합니다. 이를 위해서는 시행 착오가 필요할 수 있지만 더 나은 접근 방식은보고있는 문제와 알고리즘 및 복잡성에 대한 충분한 경험을 잘 이해하는 것입니다.

O(n2)

힌트 : 입력이 차지하는 공간을 사용할 수 있는데 왜 추가 공간을 사용합니까?

힌트 : 한 번에 한 문자 씩 검사하는 문자열 전체에서 앞뒤로 압축 – Turing Machine의 상태를 사용하여 확인중인 문자를 기억하고 이미 확인한 문자를 지 웁니다.


그게 내 두 번째 알고리즘의 기능입니다. 문자열을 앞뒤로 이동하려면 카운터가 필요합니다. 길이 입력의 경우 카운터를 저장하려면 log n 공간이 필요합니다. 내가 오해하지 않는 한, 어떤 부분이 비교되었는지 추적하지 않고는 줄을 가로 질러 앞뒤로 이동할 수없는 것 같습니다
justausr

3
왜 카운터를 저장해야합니까?
Dave Clarke

입력의 끝에 도달하면 길이는 10 자입니다. 10 문자로 돌아가서 입력의 마지막 문자를 저장해야합니다. 처음에 도착하면 두 번째 문자를 비교하고 복사하고 오른쪽으로 7 번 이동하여 두 번째 문자가 9 번째 문자와 일치하는지 확인하십시오. 계속 따라 가지 않는 한 7 번인지 어떻게 알 수 있습니까?
justausr

1
헤드는 한 번에 테이프의 한 곳에만있을 수 있지만 TM의 상태는 헤드가 본 것을 기억할 수 있으며 테이프의 다른 부분을 표시하여 테이프의 어느 부분이 이미 방문했는지 표시 할 수 있습니다 ( 알고리즘의 특정 단계에서).
Dave Clarke

1
무슨 말인지 모르겠어요 입력 스트림에서 문자를 지우거나 표시하는 경우 (같은 표시로) 입력 문자열이 부족하여 입력 문자열 처리가 완료된시기를 쉽게 확인할 수 있습니다.
Dave Clarke

3

질문은 질문되는 방법은은을 마련한다 상한 과는 하한 공간의 복잡성에.

O(logn)

alb2lallω(1)O(logn)

cΓs(n)nΓs(n)Ω(logn)


이 작업은 사소한 것이기 때문에 글자 보완에 신경 쓰지 않아도되므로 일반적인 회문에서 작동하는 모든 것을 문제를 해결하기 위해 몇 가지 상태로 수정할 수 있습니다.


0

SΩ(n2/S)

Time×Space=Ω(n2).
TS=Θ(n2)TS=Θ(n2logn)Ω(logn)O(n2/logn)SΩ(n2/S)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.