Problemi che sembrano esponenziali ma che sono P


12

Sto cercando di costruire un elenco di algoritmi / problemi che sono "eccezionalmente utili", come in, risolvendo problemi che 'sembrano' molto esponenziali in natura, ma hanno alcuni algoritmi particolarmente intelligenti che alla fine li risolvono. Esempi di cosa intendo:

  • Programmazione lineare (L'algoritmo simplex è tempo esponenziale; ci è voluto molto tempo per trovare una soluzione di tempo polinomiale!)
  • Più in generale, Programmazione semidefinita
  • Test di primalità
  • 2-SAT e HORNSAT
  • Determinanti del calcolo (se questo non sembra difficile, considera il permanente)
  • Trovare abbinamenti perfetti
  • Una varietà di problemi teorici di gruppo difficili che possono essere realizzati utilizzando la classificazione dei gruppi semplici finiti
  • Una varietà di problemi con grafi rigidi che possono essere realizzati utilizzando complicate caratterizzazioni minori proibite (incorporabilità su una superficie arbitraria; delimitazione di larghezza dell'albero e larghezza del ramo; grafici riducibili Delta-Wye)
  • Calcolo degli esponenziali in un gruppo limitato (ovvero calcolo di passi in , come compiuto da ripetute quadrature)abmodklogb
  • Calcoli basati sull'algoritmo LLL. (Come caso speciale: algoritmo euclideo. Come caso più generale: algoritmi PSLQ o HJLS.)
  • Problemi di vincolo senza termini di Taylor (?). Devo ammettere che non lo capisco del tutto, ma sembra che probabilmente sottrae i casi 2-SAT / HORNSAT sopra e qualsiasi algebra lineare su campi finiti. Vedi qui per un post più lungo
  • Problemi calcolabili tramite riduzioni olografiche .

Come menzione d'onore, vorrei anche citare Isomorfismo grafico, perché è ancora terribilmente facile ( ), ed equivale a tanti altri problemi di isomorfismo:nlog2n

  • Digraphs / multigraphs / hypergraphs (una sorta di problema "più difficile")
  • Automi / CFG finiti

Ovviamente c'è una serie di difficoltà in questi, ma tutti lasciano almeno alcune persone con un certo senso di "sorpresa", nel senso che il problema può sembrare difficile ma risulta trattabile. LP potrebbe sembrare relativamente semplice, ma ci è voluto un po 'di tempo prima che le persone costruissero una soluzione reale. La ripetuta quadratura o risoluzione di 2-SAT è qualcosa che un studente non laureato potrebbe inventare da solo, ma se avessi appreso dei problemi NP-Complete senza aver visto HORNSAT, potrebbe sembrare un candidato naturale per NP-Completezza. Risolvere il CFSG o avere un modo polinomiale per verificare la riducibilità di Delta-Wye non è una cosa da poco.

Spero che abbia senso; ci sono ovviamente molti attributi soggettivi qui, ma sono curioso di sapere quali altre persone trovano soluzioni efficaci a problemi "ovviamente difficili".


Come motivazione per questa domanda (perché lo chiedeva anche un amico): spesso parliamo di quanto sia importante insegnare agli studenti la NP-completezza e indecidibilità, perché li aiuta a riconoscere quando i problemi saranno troppo difficili e dovrebbero evitarli. Questo elenco sarebbe "problemi che potresti confondere con NP-Complete ma che puoi effettivamente fare". Non che mi aspetto che molti studenti si sazino completamente dell'impressione che i determinanti non possano essere calcolati - proprio come probabilmente non incontreranno 3SAT in natura - ma dovrebbero riconoscere altri problemi equivalenti
Alex Meiburg,

1
Ho il sospetto che questo sia troppo ampio per essere adatto al nostro sito. Chiedere un elenco esaustivo di qualcosa non sembra il tipo di domanda che funziona bene qui. "Sono curioso di sapere cosa trovano gli altri ..." sembra il tipo di domanda che non è adatta qui; consulta il nostro centro assistenza .
DW

1
Capisco, stavo cercando di riconoscere la soggettività in questa domanda, ma penso che questa domanda sia in gran parte qualcosa su cui le persone concorderebbero e imparerebbero con una discussione produttiva. Per domande con il tono che sto cercando forse (anche se conosco un sito diverso), vedi cstheory.stackexchange.com/questions/20930/… o cstheory.stackexchange.com/questions/11119/… ?
Alex Meiburg,

Inoltre, non è affatto chiaro cosa "senta" esponenziale per chi.
Raffaello

Risposte:



1

Per me tutti gli algoritmi classici e più recenti più efficienti per verificare o trovare un minimo spanning tree (MST) di un grafico ponderato connesso sono buoni candidati. Molti di questi algoritmi sono elencati in Wikipedia .

A prima vista, questo problema sembra il problema del venditore ambulante, uno dei pochi problemi NP-hard più famosi. Sorprendentemente, ci sono algoritmi lineari per verificare un MST e molti algoritmi quasi lineari per trovare un MST! In effetti, uno dei problemi aperti più famosi negli algoritmi è se esiste un algoritmo lineare deterministico per trovare un MST nei grafici generali. Si scopre che ci sono strutture e proprietà matematiche e grafiche ricche, nonché una moltitudine di applicazioni pratiche associate all'MST, che lo rendono uno degli argomenti più divertenti ed espandibili nel corso di informatica. Per un'introduzione completa leggermente obsoleta ma molto ben scritta, consulta il tutorial di Jason Eisner .

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.