web-dev-qa-db-fra.com

Exemple concret de complexité temporelle exponentielle

Je recherche un exemple concret et intuitif d'un problème qui prend (dans le pire des cas) une complexité de temps exponentielle à résoudre pour une conférence que je donne.

Voici des exemples d’autres complexités temporelles que j’ai trouvées (beaucoup d’entre elles sont issues de this SO question ):

  • O (1) - Déterminer si un nombre est pair ou impair
  • O(log N) - finding a Word in the dictionary (using binary search)
  • O (N) - lecture d'un livre
  • O(N log N) - sorting a deck of playing cards (using merge sort)
  • O (N ^ 2) - vérifie si tout est dans votre liste de courses dans votre chariot
  • O (infini) - lancer une pièce de monnaie jusqu'à ce qu'elle tombe sur la tête

Des idées?

28
del
  • O(10^N): trying to break a password by testing every possible combination (assuming numerical password of length N)

p.s. pourquoi votre dernier exemple est-il de complexité O(infinity)? c'est une recherche linéaire O(N) .. il y a moins de 7 milliards d'habitants dans le monde.

23
Aziz

La solution du problème du vendeur voyageur par la force brute est O (n!), Qui est approximativement O (N ^ N)

1
Brett Walker

Une solution brute et naïve du problème des n-reines.

Vous devez placer n reines sur un tableau n * n sans qu'elles soient prises par d'autres.

while there are untried configs, go to next solution and test it

En supposant que chaque reine soit sur une ligne donnée, il y a n possibilités pour la reine d'être placée et n pour les (n-1) autres reines (car les lignes en double ne sont pas cochées).

Par conséquent, vous avez une complexité O (n ^ n)

1
Cydonia7

Qu'en est-il de trouver un sous-ensemble d'entiers dans un ensemble tel que leur somme soit une valeur désignée X?

Je crois que cela a une complexité O (2 ^ (n/2))

0
dmcshane784