簡體   English   中英

O(n * log(n))圖靈機具有恰好1個膠帶的“給定單詞中a和b的數目相等”嗎?

[英]O(n*log(n)) Turing Machine with exactly 1 tape for “equal number of a's and b's in a given word”?

我需要使用語言L = {w |的正好1個磁帶構建一個TM。 w是一個帶有相同數量的a和b的單詞,例如:abba,aababb}

TM只能有1條磁帶,並且必須在O(n log(n))時間內運行。 我知道如何在O(n ^ 2)中做到這一點,但我不知道如何使其成為n log(n)。

例如,如果我有輸入w =“ aaaa .... abbbbb .... bb”,其中w = a ^ n / 2 * b ^ n / 2(這是最壞的情況),那么我將分別向后退時間(刪除每個b的每個a),並且執行的步驟將為1,2,3,4 ..... n。 總和(1至n)是O(n ^ 2)...

救命 ? 有任何想法嗎 ?

在較高的層次上,我正在考慮的解決方案是按從左到右的順序處理單詞。 始終有一個已處理單詞的前綴和一個未處理單詞的后綴。 delta是數a的前綴減去的數s b s時,磁帶看起來像這樣在每次迭代的開頭:

<big-endian abs(delta)><sign(delta)><suffix>
                                    ^
                                tape head

要處理下一個字母(即后綴中的第一個字母),請根據字母是ab以及符號是+還是-delta添加/減去一個,將delta一個空格的表示移動到在過程中。 最后,檢查delta是否為零。

在假定最左邊的數字無限重復的情況下,使用二進制補碼表示可能會更容易,但是我不確定是否存在任何隱藏的障礙。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM