Perché usare le lingue nella teoria della complessità


10

Sto appena iniziando ad entrare nella teoria del calcolo, che studia cosa può essere calcolato, quanto velocemente, usando quanta memoria e con quale modello computazionale.

Ho una domanda piuttosto semplice, ma spero davvero che alcuni di voi ragazzi possano aiutarmi a capire il concetto alla base:

Perché tutto è incentrato sulla nozione e la definizione di LINGUE (ovvero lingue normali e lingue senza contesto)? E come si collegano e descrivono la complessità di un algoritmo e i possibili modelli computazionali per risolverli?

Ho letto questo tipo di domande correlate:

ma non ho ancora una risposta ai miei dubbi, poiché forniscono una giustificazione pratica del perché sono importanti (cosa che capisco) ma non mi aiutano a capire perché la teoria della complessità si basa su di essi.


1
Questo non è coperto dalle nostre domande di riferimento ?
Raffaello

@Raphael - Grazie per avermi fatto notare questa domanda, è un ottimo riferimento! Lo sto leggendo proprio ora, ma al momento credo che questo potrebbe essere un addendum alla domanda cs.stackexchange.com/questions/13669/… . Non mi sembra che abbia già una risposta, per favore fatemi sapere se dimagrite altrimenti
Matteo

3
Una lingua è solo un insieme di stringhe di lunghezza finita, che è la stessa di una funzione che mappa le stringhe finite a 1 o 0. Quindi stai davvero chiedendo "perché c'è così tanta teoria della complessità sui problemi di decisione" e la risposta è che è il tipo più semplice (non banale) di compiti computazionali e spesso compiti computazionali più complicati possono essere ridotti a problemi di decisione.
Sasho Nikolov,

Risposte:


10

È perché le lingue sono il modo migliore (solo?) Per formalizzare il concetto di "problema".

L

1061091012

Il secondo è che le lingue sono solo una bella astrazione per i dati. Hai bisogno di qualcosa su cui puoi fare prove, qualcosa che puoi modellare formalmente. La codifica di input e output come stringa significa che ora non hai a che fare con bit in memoria, ma con oggetti matematici con proprietà specifiche. Puoi ragionare su di loro e dimostrarne le prove in un senso formale e molto semplice.

K

Immagino che questa sia la mia sfida per te: trova il modo di descrivere matematicamente problemi che non sono le lingue. Non so se le lingue siano speciali, ma penso che siano lo strumento più semplice che abbiamo, il più semplice da gestire.


7
Le lingue non sono certamente l'unico modo per formulare problemi. Ad esempio, potresti formalizzare qualcosa come il numero cromatico come funzione dai grafici ai numeri naturali. E, in realtà, c'è molto lavoro su problemi di funzionalità e ottimizzazione.
David Richerby,

2
Vero, ma come affronteresti la complessità del calcolo del numero cromatico senza un concetto di linguaggio o macchina?
jmite,

1
Grazie per la risposta, ho capito. Tuttavia ho ancora 2 domande: 1) il fatto che stiamo usando le lingue non influenzerà i risultati sulla complessità o sulla decidibilità di un problema? cioè un problema potrebbe essere risolvibile nell'aritmetica in virgola mobile ma non nell'aritmetica in numeri interi (ovvero programmazione in numeri interi)? 2) Come possiamo eseguire questa mappatura da qualsiasi tipo di dati a un linguaggio unico che li descrive tutti (poiché vogliamo valutare la complessità di un problema e un abstract dall'input specifico)? Grazie ancora!
Matteo

3
@jmite Hai bisogno di una macchina, sì, ma non necessariamente di una lingua.
Raffaello

2
@Raphael molte classi di complessità che sono generalmente definite in termini di tempo di esecuzione delle macchine possono essere caratterizzate in termini di complessità descrittiva.
Sasho Nikolov,

7

Esistono due risposte di base alla tua domanda:

  1. C'è di più nella teoria della complessità rispetto ai linguaggi, ad esempio le classi di funzioni, la complessità aritmetica e le sottozone di algoritmi di approssimazione e inapproximabilità.

  2. Ragioni storiche: uno degli articoli di base nella teoria della calcolabilità stava discutendo il problema di Entscheidungs ​​di Hilbert (una forma del problema di arresto).

Sfortunatamente non ne so molto di quest'ultimo, ma mi permetta di espandere il primo.

Complessità oltre le lingue

LMfMXMfM(X)L.

La complessità del circuito aritmetico (o teoria della complessità algebrica ) si occupa della complessità del calcolo di vari polinomi. Importanti classi di complessità qui sono VP e VNP e la teoria della complessità geometrica è un progetto importante che tenta di separare VP e VNP (e successivamente P e NP) usando la geometria algebrica e la teoria della rappresentazione.

Un altro esempio importante di complessità algebrica è la rapida moltiplicazione della matrice. Qui la domanda di base è quanto velocemente possiamo moltiplicare due matrici ? Domande simili ci chiedono quanto velocemente possiamo moltiplicare gli interi, quanto velocemente possiamo testare gli interi per la primalità (questo è un problema decisionale!) E quanto velocemente possiamo fattorizzare gli interi.

L'ottimizzazione convessa si occupa di problemi di ottimizzazione che possono essere risolti (o quasi risolti) in modo efficiente. Esempi sono la programmazione lineare e la programmazione semidefinita, entrambe con algoritmi efficienti. Qui siamo interessati sia nella soluzione ottimale che nella soluzione ottimale stessa. Poiché spesso esiste più di una soluzione ottimale, il calcolo di una soluzione ottimale non è ben rappresentato come un problema decisionale.

lnn


3

Diamo un'occhiata a questa domanda dal punto di vista della teoria delle categorie. I problemi di decisione (o lingue) corrisponderebbero quindi agli oggetti di una categoria e le riduzioni consentite tra due problemi corrisponderebbero ai morfismi (frecce) di una categoria.

Parlare di lingue ha il vantaggio che l'equivalenza delle lingue è ben definita (vale a dire per l'uguaglianza estensiva). Due problemi non correlati potrebbero portare alla stessa lingua, e quindi possiamo considerarli equivalenti. Se invece volessimo parlare di problemi isomorfi, dovremmo definire i morfismi consentiti tra due problemi. Ma i morfismi consentiti dipendono dall'attuale classe di complessità in esame, il che rende questo approccio meno adatto per confrontare diverse classi di complessità.

La nozione di problemi isomorfi sarà normalmente più grossolana della nozione di lingue equivalenti, cioè due problemi possono essere isomorfi, anche se le loro lingue associate non sono equivalenti. Quel che è peggio è che spesso ci sono diverse nozioni ragionevoli per i morfismi consentiti, che concordano solo rispetto agli isomorfismi consentiti. Concentrarsi sulle lingue consente di rimandare tali problemi fino a quando non abbiamo voglia di parlare di alcune diverse nozioni ragionevoli di riduzione (come la riduzione del Karp rispetto alla riduzione di Cook).


Questo non sembra rispondere alla domanda. Si potrebbe ancora parlare di morfismi tra problemi qualunque cosa si usi come oggetti nella categoria corrispondente.
David Richerby,

@DavidRicherby Il punto che volevo chiarire è che inchiodare i morfismi appropriati è più impegnativo che inchiodare gli oggetti appropriati (= lingue). (Soprattutto perché di solito esiste più di una nozione appropriata di morfismi.) Senza morfismi, non si può parlare di problemi (o algoritmi) isomorfi. Tuttavia, le lingue offrono un modo per parlare ancora di equivalenza dei problemi. Forse non l'ho spiegato bene, ma (per me) questa è una buona ragione per "usare le lingue nella teoria della complessità".
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.