Esistono prove di esistenza di algoritmi non costruttivi?


47

Ricordo che avrei potuto incontrare riferimenti a problemi che si sono dimostrati risolvibili con una particolare complessità, ma senza un algoritmo noto per raggiungere effettivamente questa complessità.

Faccio fatica a pensare a come può essere il caso; come sarebbe una prova non costruttiva dell'esistenza di un algoritmo.

Esistono davvero tali problemi? Hanno molto valore pratico?


11
algoritmi basati sul teorema di Robertson-Seymour ? O più semplicemente, usando PEM per dimostrare l'esistenza di un algoritmo in cui non sappiamo quale (arrestare il problema è banalmente decidibile per ogni macchina di Turing fissa, ma come possiamo trovare un algoritmo che risolva il problema correttamente senza risolvere (la versione uniforme di) il problema dell'arresto?) ps: cosa intendi per "valore pratico"?
Kaveh,

6
Perché, ci sono anche esempi più semplici .
Raffaello

1
Raffaele, mi sembra che il tuo commento possa essere plausibilmente aggiornato a una risposta. Forse tu (o qualcuno) potresti provare questo?
John Sidles,


2
Questo è su Wikipedia ora .
Raffaello,

Risposte:


33

Considera la funzione (presa da qui )

f(n)={10n occurs in the decimal representation of π0else

Nonostante l'aspetto, è calcolabile dal seguente argomento. Of

  1. verifica per ogni n o0nn
  2. c'è una affinché 0 k si verifica ma 0 k + 1 non.k0K0K+1

Non sappiamo quale sia (ancora), ma sappiamo che confF={f,f0,f1,...}

  1. ef(n)=1
  2. .fK(n)=[nK]

Dal momento che , f è calcolabile - ma non possiamo dire cosa sia f .FREff


2
Questa risposta è buona, così come le altre risposte. Evidentemente la domanda di jkff ha più di una risposta, nel senso che esistono più tecnologie di prova che possono dimostrare in modo non costruttivo l'esistenza dell'algoritmo.
John Sidles,

Tuttavia, sto contrassegnando questo come "accettato" perché è di gran lunga il più semplice e dimostra l'idea di base di come può sorgere una prova dell'esistenza di un algoritmo non costruttivo.
jkff,

@jkff Per quanto sia semplice, è un ottimo esercizio per gli studenti nei corsi introduttivi TCS. Mi ci sono volute settimane per adattare il mio intuito / concetto di calcolabilità alla luce di questa funzione.
Raffaello,

Sarei disposto a scommettere un milione di dollari che è la costante funzione 1. E non ho un milione di dollari. f
Daniel McLaury,

26

Questo potrebbe non essere esattamente quello che vuoi dire, ma l' algoritmo ottimale minimo di sph tree di Seth Pettie e Vijaya Ramachandran è in un certo senso non costruttivo.

È una domanda aperta se esiste un algoritmo deterministico per calcolare alberi di spanning minimi nel tempo lineare (che significa ). Pettie e Ramachandran descrivono un algoritmo che calcola gli MST in tempo lineare se esiste un tale algoritmo .O(n+m)

Intuitivamente, il loro algoritmo riduce qualsiasi esempio -vertex del problema MST a O ( n / k ) istanze più piccole con O ( k ) i vertici in tempo lineare, dove (diciamo) k = O ( log log log log log log log n ) . Quindi calcolano l'albero di confronto ottimale che calcola l'albero di spanning minimo di qualsiasi grafico k -vertex mediante enumerazione della forza bruta; anche se ciò richiede un tempo esponenziale quintuplicamente in k , è solo OnO(n/K)O(K)K=O(logloglogloglogloglogn)KK tempo. Infine, risolvono le piccole istanze usando questo albero decisionale ottimale.O(loglogn)

In altre parole, Pettie e Ramachandran costruiscono un algoritmo MST ottimale solo indirettamente, costruendo un algoritmo che costruisce un algoritmo MST ottimale.


Questo è figo! A proposito, il loro algoritmo corrisponde al miglior tempo di esecuzione in un modello di albero decisionale, giusto?
Sasho Nikolov,

Sì, è giusto!
Jeffε

2
In un certo senso, questo suona più come una funzione di ordine superiore (è una funzione che assume un'altra funzione e la prova della sua complessità temporale dipende dalla complessità dell'input) che una prova non costruttiva. Prenderei una prova non costruttiva per significare qualsiasi cosa che invoca in modo cruciale la logica classica (LEM, DNE o Peirce) nel costruire la sua prova dell'esistenza dell'algoritmo, senza effettivamente fornirlo. È comunque bello.
copumpkin

13

Ecco due esempi.

  1. Alcuni algoritmi che usano il teorema di Robertson-Seymour . Il teorema afferma che esiste un'ostruzione limitata per ciascun caso, ma non fornisce un modo per trovare un insieme così limitato. Pertanto, sebbene possiamo provare che l'algoritmo esiste, la dichiarazione esplicita dell'algoritmo dipenderà dal set di ostruzioni finito che non sappiamo trovare. In altre parole, sappiamo che esiste un algoritmo, ma non sappiamo (ancora) come trovarne uno.

  2. Un esempio più forte, sebbene meno naturale sia essenzialmente l'utilizzo di PEM o simili assiomi non costruttivi. Questo è più forte nel senso che possiamo dimostrare l'esistenza costruttiva di un algoritmo implicherebbe un assioma non costruttivo (simile ai deboli contro-esempi di Brouwer ). Un esempio del genere è più forte perché non solo dice che non conosciamo al momento alcun algoritmo esplicito (o alcun modo algoritmico per trovarne uno), ma anche che non c'è speranza di farlo.

    Ad esempio, possiamo usare PEM per dimostrare l'esistenza di un algoritmo mentre non sappiamo quale e un modo costruttivo di trovarne uno implicherebbe un assioma non costruttivo. Lasciami fare un semplice esempio:

    L'arresto del problema è banalmente decidibile per ogni macchina di Turing fissa (ogni TM si ferma o non si ferma, e in ogni caso c'è una TM che produce la risposta giusta), ma come possiamo trovare un algoritmo che risolva il problema correttamente senza risolvere ( la versione uniforme di) il problema di arresto?

    Più formalmente, non possiamo dimostrare costruttivamente che data una TM , esiste una TM H T che decide il problema della terminazione per M . Più formalmente, la seguente affermazione non può essere dimostrata in modo costruttivo:MHTM

    eN fN [({f}( )=0{e})({f}( )=1{e})]

    Qui è la TM con il codice e (in alcune rappresentazioni fisse di TM), { e } significa { e } si ferma e { f } significa che { f } non si ferma.{e}e{e}{e}{f}{f}


1
Che cos'è "ostruzione finita per ogni caso"? Penso che tu intenda " set di ostruzioni finite per ogni set infinito di grafici chiusi minori " anche il resto non è buono (ho modificato la tua risposta per risolverlo ma sembra rifiutato, preferisco non ripetere questo).
Saeed,

8

Sì.

Ad un certo punto in (1), il teorema della dicotomia dell'omomorfismo del grafico di conteggio ponderato complesso per qualsiasi dimensione di dominio finito, Cai, Chen e Lu dimostra solo l'esistenza di una riduzione del tempo polinomiale tra due problemi di conteggio tramite interpolazione polinomiale. Non conosco alcun valore pratico per un tale algoritmo.

Vedere la sezione 4 della versione di arXiv. Il lemma in questione è Lemma 4.1, chiamato "First Pinning Lemma".

Un modo per rendere costruttiva questa dimostrazione è provare la versione ponderata complessa di un risultato di Lovasz , vale a dire:

Per tutti , Z H ( G , w , i ) = Z H ( G , w , j ) se esiste un automorfismo f di G tale che f ( i ) = j .GZH(G,w,i)=ZH(G,w,j)fGf(i)=j

Qui, è un vertice in H , i e j sono vertici in G , e Z H ( G , w , i ) è la somma su tutti homomorphisms grafico complessi-pesata da G a H con la restrizione aggiunto che i deve essere mappato a w .wHijGZH(G,w,i)GHiw

(1) Jin-Yi Cai, Xi Chen e Pinyan Lu, Omomorfismi grafici con valori complessi: teorema di dicotomia ( arXiv ) ( ICALP 2010 )


7

Alcuni primi risultati della fine degli anni '80:

Dall'estratto del secondo elemento:

I recenti progressi fondamentali nella teoria dei grafi, tuttavia, hanno reso disponibili nuovi potenti strumenti non costruttivi che possono essere applicati per garantire l'appartenenza a P. Questi strumenti non sono costruttivi a due livelli distinti: non producono né l'algoritmo decisionale, stabilendo solo la finezza di un insieme di ostruzioni , né rivelano se un tale algoritmo di decisione possa essere di aiuto nella costruzione di una soluzione. Esaminiamo brevemente e illustriamo l'uso di questi strumenti e discutiamo il compito apparentemente formidabile di trovare gli algoritmi di decisione in tempo polinomiale promessi quando si applicano questi nuovi strumenti.


6

Un esempio di una famiglia infinita di problemi (di discutibile valore pratico) per i quali possiamo mostrare:

  1. Che per ogni problema esiste un algoritmo per risolverlo.
  2. Che non c'è modo di costruire questi algoritmi (in generale).

In altre parole, una prova chiaramente non costruttiva. La nostra famiglia di problemi (da questa domanda ) per ogni macchina di Turing :M

LM={M'|L(M)=L(M') e |M||M'|}

  1. M

  2. PMP(M)LMMM'|M||M'|P(M)(M')P


2
Carina. Ma il valore pratico di questo può essere meno discutibile di quanto pensi: questa è una versione decisiva del problema di trovare il programma più breve con un determinato output, ovvero una compressione dei dati ottimale.
David Eppstein,

1
Penso che l'esempio sia simile a quello che ho dato. Nota che quando diciamo che non è costruttivo, stiamo interpretando la parola costruttiva come ricorsiva / calcolabile che è una delle scuole del costruttivismo.
Kaveh,

2

Da "Teoria della bidimensionalità e note algoritmiche sulla teoria minore del grafico" per il tutorial di MohammadTaghi Hajiaghayi, di Mareike Massow, Jens Schmidt, Daria Schymura e Siamak Tazari.

Ogni proprietà del grafico chiuso in modo minore può essere caratterizzata da un insieme finito di minori proibiti.

Sfortunatamente, il loro risultato è "intrinsecamente" non costruttivo, cioè non esiste un algoritmo che può generalmente determinare quali minori devono essere esclusi per una determinata proprietà del grafico chiuso minore. Inoltre, il numero di minori proibiti può essere elevato: ad esempio, per i grafici incorporabili nel toro sono noti più di 30.000 minori proibiti, ma l'elenco è incompleto.

[...]

Ogni proprietà del grafico chiuso in modo minore può essere decisa in tempo polinomiale (anche in tempo cubico).


0

Lemma locale algoritmico di Lovász "" il lemma algoritmico locale di Lovász offre un modo algoritmico di costruire oggetti che obbediscono a un sistema di vincoli con dipendenza limitata ... Tuttavia, il lemma non è costruttivo in quanto non fornisce alcuna comprensione di come per evitare i brutti eventi ". Su alcune ipotesi / limitazioni sulla distribuzione, Moser / Tardos [1] fornisce un algoritmo costruito. il lemma locale di Lovasz sembra avere varie profonde connessioni con la teoria della complessità, ad esempio [2]

[1] Una prova costruttiva del generale Lovász Local Lemma di Moser, Tardos

[2] The Lov´asz Local Lemma and Satisfiability Gebauer, Moser, Scheder, Welzl


È un diverso senso di "costruttivo". A volte i teorici della complessità (ab) usano la parola "costruttivo" per indicare in modo efficiente algoritmico, e in quel contesto tutto ciò che non è efficacemente algoritmico viene definito non costruttivo. Ciò è diverso dalla nozione di prova costruttiva intesa nella domanda.
Kaveh,

La tua prima frase è fuorviante. La LLL algoritmica è a è del tutto costruttiva, nel senso di un algoritmo temporale polinomiale. La LLL originale aveva una dimostrazione non costruttiva nel senso di essere un argomento induttivo su uno spazio di probabilità potenzialmente enorme. Il lavoro di follow-up sul lavoro di Moser e Tardos ha praticamente colmato tutte le lacune tra la LLL algoritmica e persino un certo rafforzamento della LLL, vedere doi.acm.org/10.1145/1993636.1993669
Nikolov

il lemma originale del 1975 non era costruttivo e in seguito i ricercatori (decenni dopo) trovarono algoritmi costruttivi per casi speciali, ma "praticamente tutti i vuoti" non è lo stesso di "tutti i vuoti". è un esempio utile per dimostrare che non è garantito che una prova di esistenza non costruttiva rimarrà sempre così, cioè che la non costruttività non è sempre assoluta e può essere "soggetta a cambiamento", e che ulteriori ricerche successive possono colmare le lacune, e che anche se tutti gli spazi vuoti sono chiusi da un algoritmo che può essere sottile / difficile da dimostrare. ci sono altri esempi di questo. Ho citato la soluzione Moser / Tardos.
vzn

1
tutto quello che sto dicendo è che il modo in cui hai scritto la tua prima frase fa sembrare che la "LLL algoritmica" sia "non costruttiva". In quella citazione c'era un riferimento alla LLL originale, ma quel riferimento viene saltato a causa di dove metti le ellissi. potresti modificare per includere più del preventivo in modo che non sia confuso?
Sasho Nikolov,

1
o / wi pensa che la tua risposta sia solo tangenzialmente correlata all'argomento, ma è un buon punto che alcuni teoremi con prove non costruttive ammettano anche quelli costruttivi (e alcuni chiaramente no, a seconda di come definisci "costruttivo"). tra l'altro un problema con l'ampliamento costruttivo della LLL è che non è chiaro come definire un ragionevole problema computazionale in tutte le situazioni in cui si applica la LLL
Sasho Nikolov
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.