Questo problema con il grafico finito è decidibile? Quali fattori rendono un problema decidibile?


17

Voglio sapere se il seguente problema è decidibile e come scoprirlo. Ogni problema che vedo posso dire "sì" o "no" ad esso, quindi la maggior parte dei problemi e degli algoritmi sono decidibili tranne alcuni (che viene fornito qui )?

Input: Un dirette e grafo finito , con v ed u come vertici Domanda: un percorso in G con u come vertice iniziale e v come esistono finale vertice?Gvu
Guv


Risposte:


18

Qualsiasi problema che richiede solo l'esame di una quantità finita di dati è decidibile, poiché esiste un algoritmo che consiste nell'enumerare tutte le potenziali soluzioni. Può essere ridicolmente lento, ma non è rilevante: se esiste un algoritmo, è decidibile.

Il problema che si afferma presuppone un grafico finito, che suggerisce fortemente che è decidibile. A rigor di termini, devi guardare un po 'oltre. Il problema è una proprietà dei percorsi nel grafico e talvolta esiste un numero infinito di percorsi, quando il grafico contiene un ciclo (è possibile eseguire il ciclo attorno a questo ciclo tutte le volte che lo si desidera). Tuttavia, è facile trasformare il problema in un problema finito: se c'è un percorso che inizia con e termina con v che include un ciclo, allora puoi tagliare tutti i cicli in quel percorso e hai una nuova soluzione che fa non includere un ciclo. Poiché esiste un numero finito di percorsi che non coinvolgono un ciclo (se il grafico ha k bordi, ci sono al massimo k !uvkk!percorsi che non usano lo stesso bordo più di una volta), il problema di trovare un percorso da a v è finitario, quindi decidibile.uv

Per inciso, questa proprietà si chiama connettività .

Questo approccio è comune, chiamato riduzione . Dato un problema che non è semplice, lo abbiamo ridotto a un problema che sapevamo risolvere.

Spesso è difficile dimostrare che un problema è indecidibile. Per dimostrare che un problema è decidibile, tutto ciò che dobbiamo fare è esibire un algoritmo che lo decida. Per dimostrare che un problema è indecidibile, dobbiamo dimostrare che non può esistere alcun algoritmo. Ci sono alcuni problemi indecidibili ben noti. In pratica, la maggior parte delle volte, quando dimostriamo che un problema è indecidibile, dimostriamo che esiste un noto problema indecidibile che si riduce al nostro problema. Poiché un algoritmo per il nostro problema risolverebbe il noto problema indecidibile, anche il nostro problema deve essere indecidibile.

Non si può davvero dire che "la maggior parte" dei problemi è decidibile o che "la maggior parte" dei problemi sono indecidibili. In un certo senso teorico, quasi tutti i problemi sono indecidibili, ma abbiamo una forte tendenza ad affrontare problemi "interessanti" e quelli hanno maggiori probabilità di avere una soluzione.


15

Il problema è banalmente decidibile, come sottolineato da Gilles in un commento. Per quanto riguarda l'altra tua domanda ...

sono decidibili la maggior parte dei problemi e degli algoritmi tranne alcuni (che viene fornito qui )?

No. In realtà, la maggior parte dei problemi sono indecidibili. In effetti, ci sono innumerevoli problemi (lingue), ma ci sono solo molte macchine di Turing numerabili, il che significa che ci sono al massimo molti problemi decidibili.


8

Sì, questo è decidibile, perché puoi fare una ricerca esaustiva di tutti i possibili percorsi. Non è necessario esaminare i percorsi che ripetono un vertice, poiché la "deviazione" potrebbe essere saltata. Ma la lunghezza di qualsiasi percorso non ripetitivo è limitata dalla dimensione del grafico, che è finito, e quindi ci sono solo finitamente molti di questi percorsi, che possono essere controllati uno per uno.

solun'Bun'B


Non dipende dall'input? Voglio dire quando le informazioni fornite non sono sufficienti per scoprire la risposta, dovrei dire che è indecidibile?
Gigili

Non sono sicuro di ciò che stai chiedendo; per il problema che hai descritto l'input è sufficiente per trovare la risposta.
Carl Mummert,

@Gigili Se il problema fosse indecidibile, sarebbe impossibile elaborare un algoritmo che produca sì o no per tutti gli input. Questo non è il caso in questo problema poiché, con BFS, possiamo sempre determinare se esiste o meno un percorso (anche nel tempo lineare).
Zach Langley

@ZachLangley: giusto, stavo chiedendo il caso generale. se le informazioni fornite come input non sono sufficienti per risolvere il problema, il problema è indecidibile?
Gigili

uvuv

7

Non esiste un metodo che ti dice se un problema specifico è decidibile o meno. Con il tempo, potresti avere una buona "idea" se un problema specifico sia o meno decidibile.

Quello che faccio di solito è il seguente:

  1. prova a risolvere il problema. Cioè, prova a pensare a un programma per computer che risolve il problema dato. Per il tuo problema suggerito: un programma molto semplice controllerà qualsiasi percorso possibile e quindi riuscirà sempre a trovarlo (se esiste), o ti dirà che nessun percorso esiste altrimenti.
  2. formulare chiaramente il problema. Molti problemi sono troppo vaghi, ma se scritti in modo chiaro è molto facile vedere se decidibili o meno (confrontandoli con altri problemi, noti per essere non / decidibili, o usando metodi noti come il teorema di Rice )
  3. Se (2) non ha funzionato ma ritieni ancora che il problema sia indecidibile, prova a dimostrarlo riducendo da un problema indecidibile (il problema Halting (o il suo complemento) funziona per molti casi).

Quasi sempre, quando si tenta di eseguire il passaggio (1) per un problema indecidibile, è necessario che il programma controlli un numero infinito di cose. Questo di solito è un segno che il problema non è decidibile.

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.