Ce problème de graphe fini est-il décidable? Quels facteurs rendent un problème décidable?


17

Je veux savoir si le problème suivant est décidable et comment le découvrir. Chaque problème que je vois, je peux lui dire «oui» ou «non», donc la plupart des problèmes et des algorithmes sont-ils décidables sauf quelques-uns (qui sont fournis ici )?

Entrée: Un graphe orienté et fini , avec et comme sommets Question: Existe-t-il un chemin dans avec comme sommet initial et comme sommet final?v u G u vgvu
guv


Réponses:


18

Tout problème qui nécessite uniquement l'examen d'une quantité finie de données est décidable, car il existe un algorithme qui consiste à énumérer toutes les solutions potentielles. Cela peut être ridiculement lent, mais ce n'est pas pertinent: s'il y a un algorithme, c'est décidable.

Le problème que vous énoncez suppose un graphe fini, qui laisse fortement entendre qu'il est décidable. À strictement parler, vous devez regarder un peu plus loin. Le problème est une propriété sur les chemins du graphique, et il y a parfois un nombre infini de chemins, lorsque le graphique contient un cycle (vous pouvez faire le tour de ce cycle autant de fois que vous le souhaitez). Cependant, il est facile de transformer le problème en un problème fini: s'il existe un chemin commençant par et se terminant par v qui comprend un cycle, vous pouvez couper tous les cycles de ce chemin et vous avez une nouvelle solution qui ne ne pas inclure de cycle. Puisqu'il existe un nombre fini de chemins qui n'impliquent pas de cycle (si le graphe a k arêtes, il y a au plus k !uvkk!chemins qui n'utilisent pas la même arête plus d'une fois), le problème de trouver un chemin de vers v est finitaire, donc décidable.uv

Par ailleurs, cette propriété est appelée connectivité .

Cette approche est courante, appelée réduction . Étant donné un problème qui n'est pas simple, nous l'avons réduit à un problème que nous savions résoudre.

Il est souvent difficile de prouver qu'un problème est indécidable. Pour prouver qu'un problème est décidable, il suffit de montrer un algorithme qui le décide. Pour prouver qu'un problème est indécidable, nous devons prouver qu'aucun algorithme ne peut exister. Il existe quelques problèmes indécidables bien connus. Dans la pratique, la plupart du temps, lorsque nous prouvons qu'un problème est indécidable, nous montrons qu'il existe un problème indécidable bien connu qui se réduit à notre problème. Puisqu'un algorithme pour notre problème résoudrait le problème indécidable bien connu, notre problème doit également être indécidable.

On ne peut pas vraiment dire que «la plupart» des problèmes sont décidables ou «la plupart» des problèmes sont indécidables. Dans un certain sens théorique, presque tous les problèmes sont indécidables, mais nous avons une forte tendance à s'attaquer aux problèmes «intéressants», et ceux-ci sont plus susceptibles d'avoir une solution.


15

Le problème est trivialement décidable, comme l'a souligné Gilles dans un commentaire. Quant à votre autre question ...

la plupart des problèmes et algorithmes sont-ils décidables, à l'exception de quelques-uns (qui sont fournis ici )?

Nan. En fait, la plupart des problèmes sont indécidables. En fait, il y a un nombre incalculable de problèmes (langues), mais il n'y a que de nombreuses machines de Turing dénombrables, ce qui signifie qu'il y a tout au plus de nombreux problèmes décidables.


8

Oui, c'est décidable, car vous pouvez faire une recherche exhaustive de tous les chemins possibles. Il n'est pas nécessaire de regarder les chemins qui répètent un sommet, car le "détour" pourrait être sauté. Mais la longueur de tout chemin non répétitif est limitée par la taille du graphique, qui est finie, et il n'y a donc qu'un nombre fini de ces chemins, qui peuvent être vérifiés un par un.

Gabab


Cela ne dépend-il pas de l'entrée? Je veux dire lorsque les informations fournies ne sont pas suffisantes pour trouver la réponse, dois-je dire que c'est indécidable?
Gigili

Je ne suis pas sûr de ce que vous demandez; pour le problème que vous avez décrit, l'entrée suffit pour trouver la réponse.
Carl Mummert

@Gigili Si le problème était indécidable, il serait impossible de trouver un algorithme qui produirait oui ou non pour toutes les entrées. Ce n'est pas le cas dans ce problème car, avec BFS, on peut toujours déterminer s'il existe ou non un chemin (en temps linéaire aussi).
Zach Langley

@ZachLangley: D'accord, je demandais le cas général. si les informations fournies en entrée ne suffisent pas à résoudre le problème, le problème est-il indécidable?
Gigili

uvuv

7

Il n'existe aucune méthode qui vous indique si un problème spécifique est décidable ou non. Avec le temps, vous pourriez avoir une bonne "intuition", qu'un problème spécifique soit ou non décidable.

Ce que je fais habituellement est le suivant:

  1. essayez de résoudre le problème. Autrement dit, essayez de penser à un programme informatique qui résout le problème donné. Pour votre problème suggéré - un programme très simple vérifiera simplement n'importe quel chemin possible et réussira donc toujours à le trouver (s'il existe), ou vous dira qu'aucun chemin n'existe autrement.
  2. formuler clairement le problème. De nombreux problèmes sont tout simplement trop vagues, mais lorsqu'ils sont écrits clairement, il est très facile de voir s'ils sont décidables ou non (en les comparant à d'autres problèmes, connus pour ne pas être décidables ou en utilisant des méthodes connues comme le théorème de Rice )
  3. Si (2) n'a pas fonctionné mais que vous pensez toujours que le problème est indécidable, essayez de le prouver par réduction à partir d'un problème indécidable (l'arrêt du problème (ou son complément) fonctionne dans de nombreux cas).

Presque toujours, lorsque vous essayez de faire l'étape (1) pour un problème indécidable, vous aurez besoin de votre programme pour vérifier un nombre infini de choses. C'est généralement un signe que le problème n'est pas décidable.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.