Сызықтық жылдамдық теоремасы - Linear speedup theorem

Жылы есептеу күрделілігі теориясы, жылдамдықтың сызықтық теоремасы үшін Тьюринг машиналары кез келген шындықты беретін мемлекеттер c> 0 және кез келген к- уақытты шешетін Тьюринг машинасының лентасы f (n), тағы біреуі бар к- бір мәселені уақытында шешетін таспа машинасы f (n) / c + 2n + 3, қайда k> 1 .[1][2]Егер түпнұсқа машина болса детерминистік емес, демек, жаңа машина детерминирленген емес.Негізгі тұрақтылар 2 және 3 жылы 2n + 3 төмендетуге болады, мысалы n + 2.[1]

Дәлел

Құрылыс түпнұсқа машинаның бірнеше лента таңбаларын орауға негізделген М жаңа машинаның бір лента белгісіне N.Бұл процессорларда ұзын сөздер мен командаларды қолдану сияқты әсер етеді: ол есептеуді жылдамдатады, бірақ машинаның көлемін ұлғайтады. Жаңа таңбаға қанша ескі белгілер оралатыны қажетті жылдамдыққа байланысты.

Жаңа машина үш ескі белгіні жаңа таңбаға орады делік, сонда жаңа машинаның алфавиті солай болады : Ол бастапқы таңбалардан және оралған белгілерден тұрады.Жаңа машинада бірдей нөмір бар k> 1 таспалардың күйі N келесі компоненттерден тұрады:

  • «M» күйі;
  • әр таспа үшін: бастың астындағы оралған таңбаны, сол жақта оралған таңбаны және оң жақта оралған таңбаны сипаттайтын үш оралған таңба; және
  • әр таспа үшін: бастың астындағы оралған таңба ішіндегі бастапқы бас позициясы N.

Жаңа машина N берілген кірісті жаңа алфавитке кодтаудан басталады (сондықтан оның алфавиті міндетті түрде болуы керек) Мысалы, егер 2 лентаға кіріс болса М таспа конфигурациясын кодтағаннан кейін сол жақта орналасқан N оң жақта:

[ #_аббабба_...]    [ #(_,_,_)(_,_,_)(_,_,_)...]
[ #_________...]    [ #(_, а, б)(b, a, b)(b, a, _)...]

Жаңа құрылғы үш ескі белгіні (мысалы, бос таңба) орайды _, таңба ажәне таңба бжаңа белгіге ((_, а, б)) және оны бірінші таспаны өшіріп жатқанда екінші таспаны көшіреді, инициализация аяқталғаннан кейін жаңа машина басын басын басына бағыттайды. 2n + 3 қадамдар.

Инициализациядан кейін күйі N болып табылады , символ қайда оны кейінірек машина толтырады дегенді білдіреді; таңба түпнұсқа машинаның басы ішіндегі алғашқы белгілерді көрсетеді дегенді білдіреді және . Енді машина модельдеуді бастайды m = 3 өткелдері М өзінің алты өтпесін қолдана отырып (бұл нақты жағдайда жылдамдық болмайды, бірақ тұтастай алғанда) м алтыдан әлдеқайда үлкен болуы мүмкін) М және N болуы:

[ #__ббабба_...]    [ #(_, а, б)(b, a, b)(б,_,_)...]
[ #_аббабб__...]    [ #(_,_,б)(b, a, b)(b, a, _)...]

Мұндағы қалың белгілер бастың орналасуын көрсетеді N болып табылады Енді келесілер болады:

  • N оңға, солға, солға, оңға жылжиды. Төрт жүрістен кейін машина N оның бәрі бар толтырылады, ал оның күйі болады
  • Қазір N рәміздерін және күйін сәйкес жаңартады m = 3 түпнұсқа машинаның ауысулары. Бұл екі жүрісті қажет етуі мүмкін (ағымдағы таңбаны жаңартыңыз және оған іргелес белгілердің бірін жаңартыңыз). Бастапқы машина келесідей қозғалады делік (сәйкес конфигурациясымен N оң жақта):
[ #_____бба_...]    [ #(_, а, б)(б,_,_)(_,_,_)...]
[ #_абб_____...]    [ #(_,_,_)(_,_,б)(b, a, _)...]

Осылайша, мемлекет N болады .

Күрделілік

Инициализация қажет 2n + 3 қадамдар. Модельдеуде 6 қадам N модельдеу м қадамдары М. Таңдау m> 6c жұмыс уақытын шығарады .

Әдебиеттер тізімі

  1. ^ а б Христос Пападимитриу (1994). «2.4. Сызықтық жылдамдық». Есептеудің күрделілігі. Аддисон-Уэсли.
  2. ^ Томас А.Судкамп (1994). «14.2 Сызықтық жылдамдық». Тілдер мен машиналар: Информатика теориясына кіріспе. Аддисон-Уэсли.