Considérez le problème suivant:
Entrée : liste des entiers
Objectif : déterminer s'il existe un entier qui figure dans les deux listes.
Supposons que les deux listes soient de taille . Existe-t-il un algorithme déterministe à temps linéaire pour ce problème? En d'autres termes, pouvez-vous résoudre ce problème en temps déterministe, sans utiliser le hasard?
Malheureusement, vous ne pouvez pas supposer que les éléments de la liste sont tous petits.
Je peux voir comment le résoudre dans le temps prévu utilisant un algorithme aléatoire: choisissez au hasard une fonction de hachage 2 universelle , stockez les éléments de dans une table de hachage (en utilisant comme fonction de hachage), puis recherchez chaque élément de pour voir s'il est dans la table de hachage. Le temps d'exécution prévu sera . Cependant, je ne vois pas comment trouver un algorithme déterministe avec un temps d'exécution . Si vous essayez de dérandomiser cela et de corriger une seule fonction de hachage spécifique, il existera une entrée dans le pire des cas qui entraînera l'exécution de cette procédure danstemps. Le meilleur algorithme déterministe que je puisse trouver consiste à trier les valeurs, mais ce ne sera pas du temps linéaire. Pouvons-nous atteindre un temps de fonctionnement linéaire?
De plus, je peux voir comment le résoudre en temps linéaire si vous supposez que tous les éléments de la liste sont des entiers dans la plage (en gros, trier le comptage) - mais je suis intéressé par ce qui se passe en général cas où nous ne pouvons pas supposer cela.
Si la réponse dépend du modèle de calcul, le modèle RAM me vient à l'esprit, mais je serais intéressé par les résultats de tout modèle de calcul raisonnable. Je connais les limites inférieures de pour les algorithmes d'arbre de décision pour l'unicité des éléments , mais ce n'est pas définitif, car parfois nous pouvons trouver des algorithmes à temps linéaire même lorsqu'il existe un lié dans le modèle d'arbre de décision.