Perché il non determinismo è un concetto utile?


23

Un automa è un modello astratto di un computer digitale. I computer digitali sono completamente deterministici; il loro stato in qualsiasi momento è unicamente prevedibile dall'input e dallo stato iniziale.

Quando stiamo cercando di modellare sistemi reali, perché includere il non determinismo nella teoria degli automi?


1
Sarebbe forse utile chiedersi chi avesse originariamente descritto le NTM e quale fosse il loro scopo / obiettivo al momento.
usul

2
Si noti che il fatto che la macchina sia deterministica non significa sempre che il nostro codice lo sia. Chiunque abbia svolto il multitasking / multithreading può attestare che i tempi in cui si verifica la commutazione di attività sono spesso imprevedibili in termini pratici e dobbiamo progettare interblocchi espliciti per rendere il loro comportamento apparentemente deterministico. (Fondamentalmente, ci sono variabili nascoste nello stato.) Le comunicazioni sollevano lo stesso problema. Onestamente non so se gli NDA aiutano a risolverli - sono un ingegnere informatico, non un informatico - ma nel mondo reale le tue premesse sono troppo ottimistiche.
Keshlam,

Quando si parla di multithreading, probabilmente, si ha non determinismo, almeno se si considera il metal e il sistema operativo per formare la macchina. La cosa divertente è che il codice stesso è deterministico.
Raffaello


@keshlam Ho aggiunto il tuo punto nella mia risposta, @ Tanmoy leggi la mia risposta aggiornata.
Grijesh Chauhan,

Risposte:


16

Sì, hai ragione i computer sono automatici deterministici. I modelli non deterministici sono più utili ai fini teorici, a volte la soluzione deterministica non è così ovvia alla definizione (o si dice affermazione del problema) e quindi poco difficile da trovare una soluzione. Quindi un approccio è quello di progettare prima un modello non deterministico che può essere relativamente facile da progettare e quindi provare a convertirlo in uno deterministico. Di seguito, ho provato a dimostrare cosa intendo con un esempio. Considera l'espressione regolare:

(01)*01(0 + 1)*  

Supponiamo ora che ti venga chiesto di disegnare DFA per la lingua generata da RE.

Con la mia conoscenza della progettazione FAs, so che (1) quando un *presente in un'espressione regolare indicato ho bisogno di ciclo corrispondente FA (2) operazioni concatenate come a.bsignifica qualcosa come: .(q0)─a→(q1)─b→(q2)

Quindi, al mio primo tentativo, disegnerei un NFA come:

Figura

Pensato che questa non sia una soluzione deterministica ma sembra molto semplice FA che può essere facilmente progettata usando l'espressione regolare data. Il mio tipo di analogia per mostrare la somiglianza tra l'espressione regolare sopra e il mio NFA è il seguente:

  1. Il loop allo stato q 0 dovrebbe essere per(01)*
  2. 01(dopo (01)*) dà(q0)─0→(q1)─1→(q2)
  3. (0 + 1)* fornisce un loop automatico allo stato q 2 per l'etichetta 0, 1

Secondo la mia analogia, penso che la FA che ho disegnato sopra sia relativamente semplice da trarre da una data RE. E fortunatamente in classe di automi finiti ogni modello non deterministico può essere convertito in un equivalente deterministico. Abbiamo un metodo algoritmico per convertire un NFA in DFA . Quindi posso facilmente convertire sopra NFA in un DFA:

fig-2

L'altra parte è sfortunatamente ciò non è sempre possibile convertire un modello non deterministico in un modello deterministico, ad esempio la classe per il push down deterministico automatizza è un sottoinsieme della classe del push-down deterministico automatizza il "check venn diagram " e non puoi sempre convertire un NPDA in un PDA.

Di solito quando non è possibile convertire una soluzione non deterministica in una soluzione deterministica, allora con l'aiuto di una soluzione non deterministica definiamo una soluzione deterministica in un sottodominio (o diciamo dominio parziale) anziché in un dominio completo. Oppure definiamo la soluzione in altri modi (ad es. Approccio avido) che ovviamente potrebbe non fornirti una soluzione ottimale .

A volte il non determinismo è un meccanismo efficace per descrivere in modo preciso ed efficace alcuni complicati problemi / soluzioni, ad esempio le macchine non deterministiche possono servire da modello di algoritmo di ricerca e backtrack (leggi: Come il processo di stringa nel modello non deterministico usando backtrack ). I modelli decisamente deterministici rappresentano meglio soluzioni efficienti, minimizzate e meno ridondanti.

Qui vorrei anche citare da Wikipedia l' uso dell'algoritmo non deterministico :

Nella progettazione dell'algoritmo, gli algoritmi non deterministici vengono spesso utilizzati quando il problema risolto dall'algoritmo consente intrinsecamente più risultati (o quando esiste un unico risultato con percorsi multipli attraverso i quali può essere scoperto il risultato, ciascuno preferibilmente ugualmente). Fondamentalmente, ogni risultato che l'algoritmo non deterministico produce è valido, indipendentemente dalle scelte che l'algoritmo fa durante l'esecuzione.

Un gran numero di problemi può essere concettualizzato attraverso algoritmi non deterministici, inclusa la più famosa domanda irrisolta nella teoria dell'informatica, P vs NP.

Come @keshlam ha anche menzionato nel suo commento : "Il non determinismo" è in pratica usato per riferirsi a qualsiasi imprevedibilità nell'esito di qualche processo. Ad esempio, i programmi concorrenti mostrano un comportamento non deterministico: due esecuzioni dello stesso programma con lo stesso input possono produrre risultati diversi (se non si applica il meccanismo di controllo della concorrenza ). Maggiori informazioni al riguardo in "Utilità del non determinismo" .

Vorrei anche suggerire di leggere i seguenti link:
1. Qual è la differenza tra non determinismo e casualità?
2. 9.2.2 Modelli non deterministici vs. probabilistici: (a). Non deterministico : non ho idea di cosa farà la natura. (b). Probabilistico: ho osservato la natura e raccolto statistiche.
3. Programmazione non deterministica


@Grijest: molte grazie per un'enorme elaborazione. Solo una confusione: "I modelli decisamente deterministici rappresentano meglio soluzioni efficienti, minimizzate e meno ridondanti." - Ma penso che i modelli deterministici siano meno efficienti di quelli non deterministici (ecco perché i problemi NP sono più complessi di P. Non è vero?)
tanmoy

@tan In realtà usare la parola "efficiente" è sbagliato, e sì, hai ragione nel dire che i modelli non deterministici sono più capaci di quelli deterministici. La classe di problemi coperti dai modelli deterministici è un sottoinsieme del modello non deterministico.
Grijesh Chauhan,

quindi in quale contesto i modelli deterministici sono "efficienti" rispetto a quelli non deterministici (come hai detto)?
tanmoy,

@tan Supponiamo che tu voglia eseguire ulteriori operazioni (ad esempio, vuoi convertire FA in RE, o spiegare le prove per pompare il lemma, o qualche altro ..) quindi il modello deterministico ti darà risultati migliori (quindi ho detto efficiente).
Grijesh Chauhan,

@tan Capisci le grammatiche ambigue?
Grijesh Chauhan,

9

È più il contrario: gli automi sono nati per primi, come modelli matematici. E il non determinismo è del tutto naturale, spesso hai diversi percorsi aperti davanti a te. Invece di un modo disordinato di specificare che tutti i percorsi devono essere seguiti fino alla fine in un certo ordine, e forse essere impantanati da infiniti rami e ... usare solo il non determinismo.

E mentre i linguaggi di programmazione non deterministici non sono mainstream, hanno una storia ilustrious, forse a partire dalla GCL di Dijkstra . Mentre le macchine ottengono sempre più core (processori indipendenti), una qualche forma di non determinismo si sta diffondendo in tutta la programmazione.


Penso che la prima parte della tua risposta sia effettivamente sbagliata. Perché pensi che gli automi siano nati per primi? Sia i DFA che gli NFA sono stati definiti oltre 10 anni dopo che Turing ha definito le TM. Vedi la discussione su cstheory
Artem Kaznatcheev il

@ArtemKaznatcheev, il modello di macchina di Turing è un automa e sicuramente precede i computer di almeno un decennio.
vonbrand

sì, ma quando le persone dicono automi non significano TM ma significano automi a stati finiti e le loro estensioni dirette (PDA, NPDA, ecc.). Vedi la domanda che ho collegato per una storia lì e vedrai che sia la TM che l'architettura von Neumann sono state sviluppate indipendentemente da ciò che ora chiamiamo teoria degli automi.
Artem Kaznatcheev,

4
@ArtemKaznatcheev, DFA / NFA, PDA, LBA, TM sono tutti automi. Come i trasduttori (FA con uscita, PDA con uscita).
vonbrand

1
L'ultimo paragrafo è sbagliato. Prolog precede GCL, ed è ancora ancora in circolazione e abbastanza mainstream. Prolog ovviamente non è stato progettato nel vuoto, basandosi su linguaggi di programmazione non deterministici precedenti come PLANNER. Il merito va probabilmente alla "programmazione Backtrack" di Golomb e Baumert dal 1965.
Pseudonimo

7

Gli NFA potrebbero essere utilizzati in pratica, dai un'occhiata a questa risposta su stackexchange. Il motivo è che la costruzione del powerset può essere simulata al volo, per così dire. Al fine di simulare un NFA su un computer deterministico, teniamo semplicemente traccia dei possibili stati in cui potrebbe trovarsi l'NFA. In genere, questo numero sarebbe piccolo e quindi la simulazione sarebbe veloce. Questo è molto più pratico che eseguire l'attuale costruzione del powerset: l'automa risultante potrebbe essere molto grande, anche se in pratica la maggior parte dei set verrebbe raggiunta raramente.

Il non determinismo è anche importante per la complessità di calcolo, dove viene utilizzato per definire la classe NP. (La classe NP ha anche altre definizioni equivalenti, ad esempio l'uso di testimoni.)


capire la tua risposta, ma non puoi comprenderla correttamente. Potresti, per favore, elaborare il fatto che come la costruzione di powerset può essere fatta facilmente usando il non determinismo?
tanmoy,

"Il non determinismo è anche importante per la complessità di calcolo, dove viene utilizzato per definire la classe NP." - ciò sostiene l'importanza del non determinismo solo se assumiamo che NP sia un concetto utile, che è solo se il non determinismo è utile.
Raffaello

@Raphael NP-completezza è un concetto importante indipendentemente dalla tua posizione sul non determinismo.
Yuval Filmus,

2
@Tanmoy Se hai il non determinismo non hai bisogno della costruzione del powerset, ma sfortunatamente i computer reali sono deterministici. Tuttavia, potrebbe essere più semplice simulare direttamente un NFA anziché convertirlo prima in un DFA. Controlla la risposta a cui mi collego per maggiori dettagli.
Yuval Filmus,

4

Dichiarate correttamente che gli automi sono modelli, quindi ci sono due parti di utilizzo che il non determinismo può avere:

  1. Utilizzare nella modellazione di problemi reali.

    Inoltre, gli automi non deterministici possono fornire rappresentazioni più compatte delle lingue. Ad esempio, è noto che esistono NFA i cui DFA minimi equivalenti sono esponenzialmente più grandi.

  2. Utilizzare in teoria.

    L'uso del non determinismo può semplificare le prove, vedi ad esempio la conversione di espressioni regolari in automi finiti.


4

(Questa è una riformulazione di alcune delle altre risposte, ma la posterò comunque :)

Scrivi: Un automa è un modello astratto di un computer digitale.

Non sono d'accordo! Gli automi modellano il modo in cui noi umani specificiamo il calcolo, non solo il modo in cui i computer lo eseguono. Il non determinismo è esattamente la differenza. Le nostre specifiche sono spesso non deterministiche.

Ad esempio, prendi l' ordinamento di tipo merge . Unisci ordinamento è l'ordinamento suddividendo gli elementi da ordinare in due metà di dimensioni approssimativamente uguali, ordinando ogni metà utilizzando un ordinamento unito e unendo i risultati ordinati. Questo specifica completamente l'idea di unire l'ordinamento, ma non è deterministico: non specifica un ordine in cui ordinare le metà (per quanto ci interessa, può essere fatto contemporaneamente), né specifica un modo esatto per determinare la divisione. Questi dettagli dovranno essere compilati per arrivare a una versione deterministica e sequenziale del tipo di unione che può essere implementata da un programma per computer a thread singolo, ma direi che fanno parte di un modo particolare di fare l'ordinamento di fusione, non l'idea di unire l'ordinamento stesso.

Lo stesso vale per gli algoritmi in generale, ad esempio le ricette del ricettario. Alcune persone definiscono gli algoritmi deterministici, nel qual caso questa nozione più generale e secondo me più naturale di "algoritmo" necessita di un nome diverso.

L'idea di lavorare con specifiche non deterministiche è stata formalizzata dal metodo di programmazione di Dijkstra, che inizia con specifiche che danno solo pre e post-condizioni che il programma deve soddisfare e sviluppa sistematicamente da esse un programma deterministico e imperativo. Dijkstra avrebbe probabilmente detto: l' ordinamento è il problema, la relazione tra pre e postcondizioni che stiamo cercando di stabilire; unisci ordinamentoè un approccio per farlo, a metà strada tra la specifica del problema e una soluzione deterministica; un particolare algoritmo di ordinamento per fusione deterministica è una soluzione deterministica concreta. Ma lo stesso approccio generale può essere utilizzato per lo sviluppo di programmi concorrenti, in cui l'eventuale programma è ancora non deterministico. Tali programmi possono ad esempio essere eseguiti in ambienti di elaborazione distribuiti.


2

Hai ragione, NON possiamo costruire una macchina non deterministica. Pertanto, l'obiettivo non è utilizzare il concetto per costruire macchine migliori. Piuttosto, il non determinismo è un concetto utile quando si cerca di capire il calcolo. Ad esempio, ora sappiamo che, dal punto di vista della calcolabilità, il non determinismo non è qualcosa di più potente del determinismo, nel senso che possiamo simulare una macchina non deterministica usando una deterministica. Tuttavia, dal punto di vista della complessità, il non determinismo ci consente, ad esempio, di ragionare e cercare di comprendere la relazione tra la difficoltà di trovare una soluzione efficiente per un problema e la difficoltà di verificare una soluzione (che è il famoso problema P contro NP) . E così via. Pertanto, la ragione principale per studiare il non determinismo è teorica.


Senza contesto contro deterministico Senza contesto?
alto

@alto Che ne pensi?
babou,

@babou Stavo cercando di sottolineare che "il non determinismo non è qualcosa di più potente del determinismo" è una falsa affermazione. Le NPDA sono più potenti dei PDA.
alto

1
@alto: no, stai fraintendendo l'affermazione. Dal punto di vista della computabilità, sono completamente equivalenti, poiché la classe di problemi (o le lingue se preferisci) che potresti risolvere INDIPENDENTEMENTE di quante risorse di calcolo sono richieste è la stessa. E infatti, PUOI simulare una macchina non deterministica con una macchina deterministica. Ancora una volta, il tempo e lo spazio richiesti NON CONTANO nel contesto della calcolabilità.
Massimo Cafaro,

1
@MassimoCafaro Non potrei essere più d'accordo, in teoria. In pratica sembra che preferisca cavillare sulla semantica.
alto

2

l'invenzione della macchina di Turing fu nel 1936 da Turing. I modelli simil-FSM furono introdotti da McCulloch e Pitts , due neurofisiologi, come modello per l'attività neurobiologica nel 1943. dalla pagina di storia di Stanford CS :

L'entusiasmante storia di come gli automi finiti sono diventati una branca dell'informatica illustra la sua vasta gamma di applicazioni. Le prime persone a considerare il concetto di macchina a stati finiti includevano un team di biologi, psicologi, matematici, ingegneri e alcuni dei primi scienziati informatici. Tutti condividevano un interesse comune: modellare il processo del pensiero umano, sia nel cervello che in un computer. Warren McCulloch e Walter Pitts, due neurofisiologi, furono i primi a presentare una descrizione degli automi finiti nel 1943. Il loro articolo, intitolato "Un calcolo logico nell'attività nervosa", ha dato un contributo significativo allo studio della teoria delle reti neurali, teoria di automi, la teoria del calcolo e della cibernetica. Più tardi, due scienziati informatici, GH Mealy ed EF Moore, generalizzò la teoria a macchine molto più potenti in documenti separati, pubblicati nel 1955-56. Le macchine a stati finiti, la macchina Mealy e la macchina Moore, sono state nominate in riconoscimento del loro lavoro.

non uno storico CS, ma sospetta che il modello McCulloch-Pitts non includesse il non determinismo e il modello Mealy - Moore , in una generalizzazione / astrazione naturale del concetto formale / teorico. si noti che DFA e NFA hanno lo stesso potere rappresentativo, quindi se si desidera modellare sistemi reali è possibile scegliere uno dei due. una differenza fondamentale è che un NFA può essere molto più piccolo di un DFA equivalente (quindi ad esempio esiste un elemento naturale di compressione di dati / informazioni). ci sono anche aspetti naturali / analoghi del parallelismo nello studio NFA.


3
Ehi, ho visto il tuo profilo e sembra che qualcuno abbia deliberatamente sottovalutato le tue risposte (ogni volta che hai solo due voti negativi) ... Questa risposta non è sbagliata , la risposta aggiunge informazioni utili. +1
Grijesh Chauhan

0

Prima di tutto vorrei ringraziare tutte le persone che hanno risposto alla domanda. Tutte le risposte sono importanti e aggiungono alcune informazioni utili. Ma poiché è una domanda delicata per i principianti e ho bisogno di tempo sufficiente per capirlo bene, io proverei a riassumere ciò che ho guadagnato da tutte le risposte e da alcuni libri:

In realtà avevo una confusione che riguardava il meccanismo del modello non deterministico. Mi sono sempre chiesto la macchina non deterministica in quanto è una macchina non meccanica che non esiste nel mondo reale. Ho sempre confrontato Automata con i nostri computer di oggi che sono completamente deterministici in natura. In realtà non capivo correttamente il modello non deterministico. Ora penso di capire abbastanza bene il modello non deterministico: una macchina non deterministica è una macchina che segue sempre quel percorso di esecuzione che porta all'accettazione della stringa (senza backtracking). Ma come può essere possibile nella vita reale? : È assolutamente impossibile per i computer di oggi essere così intelligenti per prevedere il futuro. Quindi perché il non determinismo? La risposta a questa domanda è piuttosto complicata. Ciò che ho concluso sulla domanda è che: La teoria degli automi esisteva quando i computer non esistevano (prima teoria poi pratica). Si tratta di un argomento puramente teorico e il concetto di non determinismo è venuto intuitivamente. Il motivo della "teoria degli automi" non era quello di trattare con i computer pratici. Ma quando praticamente arrivano i computer, allora usando la teoria degli automi siamo in grado di definire con precisione i computer pratici: quali sono i limiti dei computer di oggi. Quale problema algoritmico è molto complesso per i computer e così poco pratico (Qui il ruolo del non germinismo è molto cruciale con il quale noi può distinguere due classi di complessità P e NP) .Quali sono le soluzioni a questi problemi poco pratici con cui può essere eseguito relativamente più velocemente.etc. Questa è l'utilità del non determinismo. Si tratta di un argomento puramente teorico e il concetto di non determinismo è venuto intuitivamente. Il motivo della "teoria degli automi" non era quello di trattare con i computer pratici. Ma quando praticamente arrivano i computer, allora usando la teoria degli automi siamo in grado di definire con precisione i computer pratici: quali sono i limiti dei computer di oggi. Quale problema algoritmico è molto complesso per i computer e così poco pratico (Qui il ruolo del non germinismo è molto cruciale con il quale noi può distinguere due classi di complessità P e NP) .Quali sono le soluzioni a questi problemi poco pratici con cui può essere eseguito relativamente più velocemente.etc. Questa è l'utilità del non determinismo. Si tratta di un argomento puramente teorico e il concetto di non determinismo è venuto intuitivamente. Il motivo della "teoria degli automi" non era quello di trattare con i computer pratici. Ma quando praticamente arrivano i computer, allora usando la teoria degli automi siamo in grado di definire con precisione i computer pratici: quali sono i limiti dei computer di oggi. Quale problema algoritmico è molto complesso per i computer e così poco pratico (Qui il ruolo del non germinismo è molto cruciale con il quale noi può distinguere due classi di complessità P e NP) .Quali sono le soluzioni a questi problemi poco pratici con cui può essere eseguito relativamente più velocemente.etc. Questa è l'utilità del non determinismo. Ma quando praticamente arrivano i computer, allora usando la teoria degli automi siamo in grado di definire con precisione i computer pratici: quali sono i limiti dei computer di oggi. Quale problema algoritmico è molto complesso per i computer e così poco pratico (Qui il ruolo del non germinismo è molto cruciale con il quale noi può distinguere due classi di complessità P e NP) .Quali sono le soluzioni a questi problemi poco pratici con cui può essere eseguito relativamente più velocemente.etc. Questa è l'utilità del non determinismo. Ma quando praticamente arrivano i computer, allora usando la teoria degli automi siamo in grado di definire con precisione i computer pratici: quali sono i limiti dei computer di oggi. Quale problema algoritmico è molto complesso per i computer e così poco pratico (Qui il ruolo del non germinismo è molto cruciale con il quale noi può distinguere due classi di complessità P e NP) .Quali sono le soluzioni a questi problemi poco pratici con cui può essere eseguito relativamente più velocemente.etc. Questa è l'utilità del non determinismo. Quali sono le soluzioni a questi problemi poco pratici con cui può essere eseguito relativamente più velocemente. Questa è l'utilità del non determinismo. Quali sono le soluzioni a questi problemi poco pratici con cui può essere eseguito relativamente più velocemente. Questa è l'utilità del non determinismo.

Per favore, correggimi se c'è qualcosa di sbagliato.


È sbagliato affermare che una macchina non deterministica è una macchina che segue sempre il percorso di esecuzione che porta all'accettazione della stringa . Non lo fa! Una macchina non deterministica è una macchina il cui funzionamento consente di effettuare determinate scelte non premeditate (= non deterministiche) durante l'esecuzione. Non c'è nulla di irrealistico in tali macchine, ad esempio possono chiedere all'ambiente di fare queste scelte. Queste macchine vengono quindi applicate alle attività per le quali sostiene che determinate scelte produrranno uno stato accettante.
reinierpost,

@reinierpost: Quindi stai dicendo che esistono macchine non deterministiche nella vita reale.
tanmoy,

Sì. Ecco un esempio: supponiamo che stai guidando un'auto e non stai prendendo alcuna decisione sulla rotta da seguire. Ad esempio, potresti guidare senza meta o prendere le indicazioni da un navigatore umano o da un dispositivo di navigazione. L'auto e tu sei un sistema non deterministico per guidare luoghi. Ti muovi attraverso il traffico e continui a incontrare scelte su quale direzione prendere. Per te e la macchina, queste scelte non sono deterministiche: non stai decidendo quale direzione prendere, ma data quella decisione, la seguirai.
reinierpost,

@reinierpost: esiste un computer non deterministico? La mia risposta è NO. perché se esiste allora i problemi NP avrebbero complessità temporale polinomiale. non è vero?
tanmoy

Se i computer sono deterministici o non deterministici dipende da come li guardi. Quando un computer si ferma e aspetta che l'utente faccia qualcosa, e le sue azioni successive dipenderanno da ciò che l'utente fa, puoi dire che è una scelta non deterministica. No, questo non implica che P = NP.
reinierpost,

0

il non determinismo è utile perché ti aiuta a capire il determinismo, ma non viceversa. Si potrebbe dire che il non determinismo è l'idea più grande. Una macchina turing deterministica è un caso speciale di una non deterministica. - Il non determinismo può aiutarci a capire perché, sulle piattaforme odierne, alcuni problemi sono difficili da individuare. Esistono numerosi problemi computazionali che non hanno una soluzione efficiente su una piattaforma informatica deterministica, ma comprendiamo che possono esserci soluzioni efficienti su quelli non deterministici. ... stato, codifica, non determinismo sono tutti collegati http://people.cs.umass.edu/~rsnbrg/teach-eatcs.pdf

In una macchina di Turing deterministica, l'insieme di regole prescrive al massimo un'azione da eseguire per ogni situazione. Una macchina di Turing non deterministica (NTM), al contrario, può avere una serie di regole che prescrivono più di un'azione per una determinata situazione. http://en.wikipedia.org/wiki/Non-deterministic_Turing_machine Se riesci a creare un box software in grado di gestire le transizioni di stato così bene da poter gestire più di un'azione, puoi ottenere prestazioni oltre le macchine deterministiche.


Non sono sicuro che i presunti collegamenti alla realtà siano affatto utili. È abbastanza chiaro che non possiamo costruire una macchina non deterministica (almeno oggi), quindi è un costrutto interamente teorico.
Raffaello

Possiamo costruire una macchina non deterministica lasciando che le decisioni non deterministiche siano prese da qualcosa di esterno alla macchina.
reinierpost,

@ reinierpost, cosa ancora più importante possiamo costruire macchine non deterministiche come deterministiche, senza incorrere in costi esponenziali. vedi il teorema di Savitch. en.wikipedia.org/wiki/Savitch's_theorem
Tom

@ Raffaello, alcuni riferimenti al mondo reale sono importanti. Perché la memorizzazione nella cache funziona? Perché gli eventi nel mondo reale, che alla fine è la fonte di tutti i dati, seguono una normale distribuzione. vedi località temporale: durablescope.blogspot.co.at/2009/11/…
Tom

@ reinierpost, e quel qualcosa di esterno è ciò che Turing chiamava una macchina dell'oracolo. Penso che si possa pensare se i dati escono dalla cache o qualcosa di simile a una macchina multi-nastro o anche solo alla memoria ad accesso casuale.
Tom,

0

Perché il concetto di non determinismo è utile?

Il determinismo ha una forte tendenza a rompere le simmetrie. Questa tendenza è ancora più forte per il determinismo sequenziale, ma la nozione di un grafico diretto aciclico e un ordine topologico di tale grafico consente di ignorare la differenza tra determinismo e determinismo sequenziale. Il non determinismo è un superset di determinismo, che consente di preservare più simmetrie. Quando si progetta la soluzione di un problema, iniziare con la soluzione non deterministica consente di preservare utili simmetrie e che mantiene la descrizione della soluzione piccola e compatta. La rottura delle simmetrie può quindi essere delegata ad una fase successiva durante l'implementazione, mentre converte la soluzione non deterministica in una soluzione deterministica.

Spesso il non determinismo significa che la nozione di una funzione parziale è sostituita dalla nozione di una relazione. In tal caso, una macchina non deterministica può funzionare sia avanti che indietro nel tempo, mentre ciò non è possibile in generale per una macchina deterministica. Se lavoriamo con funzioni totali per determinismo e funzioni totali multivalore per non determininsim, la simmetria non è più così piacevole, ma può ancora essere fatta funzionare.


Puoi fare un esempio specifico? Trovo difficile capire cosa intendi per "simmetria" qui.
Raffaello

@Raphael Che ne dici di invertire (01) * 01 (0 + 1) * a (0 + 1) * 10 (10) * in modo che riconosca la stringa di input invertita e applichi questa simmetria alla macchina non deterministica invertendo tutto freccia e scambio di stato iniziale e finale? Non sono sicuro che ci siano esempi significativamente più interessanti per le macchine a stati finiti, ma potrei provare a trovare un esempio interessante per un PDA.
Thomas Klimpel,

Ho scritto della mia risposta a una domanda simile in un post sul blog sulla reversibilità delle relazioni binarie, matrici substocastiche e funzioni parziali .
Thomas Klimpel,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.