EDIT AU 10/12/08:
Je vais essayer de modifier la question pour que plus de personnes puissent partager leurs opinions. Nous avons besoin de vos contributions!
Ce billet est inspiré de celui de MO: Exemples de fausses croyances courantes en mathématiques . Les grandes listes génèrent parfois un nombre considérable de réponses dont il est difficile de contrôler les qualités, mais après le succès de l'article connexe sur MO, je suis convaincu qu'il serait utile d'énumérer un ensemble de fausses croyances communes dans TCS.
Néanmoins, comme le site est conçu pour répondre à des questions de recherche, des exemples tels que signifie «temps non polynomial» ne devraient pas figurer sur la liste. En attendant, nous voulons des exemples qui ne seront peut-être pas difficiles, mais sans penser aux détails, cela semble également raisonnable. Nous voulons que les exemples soient éducatifs et apparaissent généralement lorsque vous étudiez le sujet à la première fois.
Quels sont quelques exemples (non triviaux) de fausses croyances communes en informatique théorique qui apparaissent aux personnes qui étudient dans ce domaine?
Pour être précis, nous voulons des exemples différents des résultats surprenants et des résultats contre - intuitifs dans TCS; ce genre de résultats rend les gens difficiles à croire, mais ils sont VRAI. Ici, nous demandons des exemples surprenants que les gens peuvent penser au premier abord, mais après une réflexion plus approfondie, la faille est révélée.
Comme exemple de réponses correctes sur la liste, celle-ci vient du domaine des algorithmes et de la théorie des graphes:
Pour un graphe -node , un séparateur -arête est un sous - ensemble des bords de taille , où les nœuds de peuvent être partition en deux parties non adjacentes, chacune se compose d'au plus nœuds . Nous avons le "lemme" suivant:
Un arbre a un séparateur 1 bord.
Droite?
Réponses:
C’est l’un des problèmes communs à la géométrie algorithmique , mais il est endémique ailleurs: les algorithmes de la RAM réelle peuvent être transférés vers la RAM d’entier (pour les restrictions d’entier du problème) sans perte d’efficacité. Un exemple canonique est l’affirmation «L’élimination gaussienne s’exécute en temps». En fait, les ordres d’élimination négligents peuvent produire des entiers avec un nombre exponentiel de bits .O(n3)
Pire, mais malheureusement toujours commun: les algorithmes de la RAM réelle avec fonction de plancher peuvent être transférés à la RAM entière sans perte d'efficacité. En fait, un étage réel + RAM peut résoudre n’importe quel problème dans PSPACE ou dans #P en plusieurs étapes .
la source
Je viens d'avoir un autre mythe brisé, qui est alimenté par la réponse de @ XXYYXX à ce message :
Mais nous avons des algorithmes temporels sous-exponentiels pour certains problèmes NP-difficiles.
la source
Une fausse croyance qui a été popularisée cette année et qui se répète souvent lorsque l’on essaie d’expliquer l’ensemble du problème de , puisque P s’explique comme efficace:P≠NP P
"Si , nous pouvons résoudre efficacement un grand nombre de problèmes. Sinon, nous ne pouvons pas"P=NP
Si peut être résolu en O ( n g o o g o l p l e x ) alors P = N P . Je ne pense pas que quiconque penserait même à exécuter cet algorithme.3SAT O(ngoogolplex) P=NP
Si , nous pouvons toujours avoir un algorithme pour T S P qui s'exécute dans n log ( log n ) , qui est inférieur à n 5 pour n ≤ 2 32 . La plupart des gens seraient plus qu'heureux de pouvoir résoudre T S P pour 4 milliards de villes aussi rapidement.P≠NP TSP nlog(logn) n5 n≤232 TSP
la source
C’est vraiment une fausse croyance en maths, mais cela revient souvent dans les contextes du TCS: Si les variables aléatoires et Y sont indépendantes, alors conditionnées à Z, elles restent indépendantes. (faux même si Z est indépendant de X et de Y )X Y Z Z X Y
la source
Informatique distribuée = informatique distribuée hautes performances (clusters, grilles, nuages, seti @ home, ...).
Algorithmes distribués = algorithmes pour ces systèmes.
Spoiler: Si cela ne ressemble pas vraiment à une "fausse croyance", je vous suggère de jeter un coup d'œil aux conférences telles que PODC et DISC et de voir le type de travail que font réellement les gens qui étudient les aspects théoriques de l'informatique répartie.
Un problème typique est le suivant: Nous avons un cycle avec nœuds; les noeuds sont étiquetés avec des identificateurs uniques à partir de l'ensemble { 1 , 2 , . . . , poly ( n ) } ; les nœuds sont déterministes et échangent des messages de manière synchrone. Combien de tours de communication synchrone (en fonction de n ) sont nécessaires pour trouver un ensemble maximal indépendant? Combien de tours sont nécessaires pour trouver un ensemble indépendant avec au moins n / 1000 noeuds? [La réponse à ces deux questions est exactement Θ ( log *n {1,2,...,poly(n)} n n/1000 , découverte en 1986–2008.]Θ(log∗n)
C'est-à-dire que les gens étudient souvent des problèmes complètement triviaux du point de vue des algorithmes centralisés et qui ont très peu de choses en commun avec un quelconque type de calcul intensif ou de calcul haute performance. Le problème n’est certainement pas d’accélérer le calcul centralisé en utilisant davantage de processeurs, ou quelque chose du genre.
Le but est de construire une théorie de la complexité en classant les problèmes de graphes fondamentaux en fonction de leur complexité de calcul (par exemple, combien de tours synchrones sont nécessaires, combien de bits sont transmis). Des problèmes tels que les ensembles indépendants en cycles peuvent sembler inutiles, mais ils remplissent un rôle similaire à celui de la technologie 3-SAT en informatique centralisée: un point de départ très utile pour les réductions. Pour les applications concrètes du monde réel, il est plus judicieux d’examiner les périphériques tels que les routeurs et les commutateurs des réseaux de communication plutôt que les ordinateurs des grilles et des clusters.
Cette fausse croyance n'est pas totalement inoffensive. En fait, il est assez difficile de vendre au grand public des travaux liés à la théorie des algorithmes distribués. J'ai reçu des rapports hilarants d'arbitres de conférences du SDC ...
la source
Un élémentaire, mais commun lorsque nous traitons pour la première fois avec des notations asymptotiques. Considérons la "preuve" suivante de la relation de récurrence et T ( 1 ) = 1 :T(n)=2T(n/2)+O(nlogn) T(1)=1
Nous prouvons par induction. Pour le cas de base, cela vaut pour . Supposons que la relation soit vraie pour tous les nombres inférieurs à n ,n=1 n
QED (est-ce?)
la source
Jusqu’à récemment, j’imaginais que chaque machine de Turing à bandes multiples fonctionnant dans le temps T ( n ) pouvait être simulée par une machinne de Turing à deux bandes oubliée M o dans le temps O ( T ( n ) log T ( n ) ) dans ce qui suit: sens:M T(n) Mo O(T(n)logT(n))
(voir ce post de rjlipton par exemple)
De plus, la deuxième ligne ne tient pas , en général, si . Nous avons besoin d' une fonction entièrement de temps constructible de l' ordre Θ ( T ( n ) log T ( n ) ) (voir cette question pour la définition de (fonctions entièrement) constructible temps) ou nous devons permettre à M o de briguer un temps infini (nous permettons à M o de courir après avoir atteint l’état accepté enEXP−TIME≠NEXP−TIME Θ(T(n)logT(n)) Mo Mo temps). Le problème est que, pour T : N → N, il est impossible de "mesurer" Θ ( T ( n ) log T ( n ) ) dans le temps O ( T ( n ) log T ( n ) ) à moins que E X P - T I M EO(T(n)logT(n)) T:N→N Θ(T(n)logT(n)) O(T(n)logT(n)) .EXP−TIME=NEXP−TIME
La preuve de cette affirmation est très similaire à la preuve dans la réponse de Q1 ici , donc nous ne donnerons que les idées clés.
la source
Voici mes deux cents:
De plus, la machine s’arrête toujours.
La définition est-elle correcte? (Non)
la source
Eh bien, la hiérarchie ne donne en que . Nous aurions besoin par exemple de pour . Pour les fonctions telles que , est très commun. Mais à proprement parler, la hiérarchie temporelle non déterministe est souvent énoncée superficiellement.NTIME(g(n))−NTIME(f(n))≠∅ f(n)≤g(n) NTIME(f(n))⊊NTIME(g(n)) f,g f(n+1)=o(g(n)) f(n)≤g(n)
Pour montrer que ne pas pour tous les éléments entièrement constructibles dans le temps st , définissons et . Il est facile de voir que et sont entièrement constructibles dans le temps et que . De la hiérarchie temporelle non déterministe, nous savons qu’il existe un langage sur . DéfinissezNTIME(f(n))⊆NTIME(g(n)) f,g f(n+1)=o(g(n))
Il en résulte que . Il est facile de voir que suit , ce qui n’est pas vrai. Par conséquent, .L1∈NTIME(f(n)) L1∈NTIME(g(n)) L∈NTIME((n+1)2) L1∈NTIME(f(n))−NTIME(g(n))
la source
J'ai souvent entendu dire que Valiant-Vazirani disait que réduit aléatoirement à , ou que , ou que . En particulier, cela impliquerait que si Valiant-Vazirani peut être dérandomisé, alors . Mais en fait, Valiant-Vazirani dit que .U P N P ⊆ R P U P N P ⊆ R ⋅ U P N P = U P N P de R P P r o s m i s e U PNP UP NP⊆RPUP NP⊆R⋅UP NP=UP NP⊆RPPromiseUP
Fausse croyance étroitement liée: est la classe de langages avec un vérificateur poly-temps non déterministe tel que siff existe un témoin unique. La correction est que le vérificateur doit satisfaire à la propriété sémantique qui, dans toutes les instances, compte au plus un témoin. La définition ci-dessus, sans correction, est la définition de . Mais est très différent de : par exemple, . L x ∈ L U S U S U P c o N P ⊆ U SUP L x∈L US US UP coNP⊆US
la source
Si est la valeur attendue de , nous nous attendons à ce que se produise réellement.X { X = μ }μ X {X=μ}
la source