Existe-t-il un algorithme d'optimisation de la complexité spatio-temporelle des algorithmes?

9

Dans les années 1950, un certain nombre de méthodes de minimisation des circuits pour les fonctions booléennes ont été inventées. Existe-t-il une extension de ces méthodes ou quelque chose de similaire pour optimiser la complexité temporelle ou spatiale des algorithmes?

Par exemple, une implémentation du tri à bulles en entrée d'un tel algorithme produirait une implémentation d'un algorithme de tri avec une complexité temporelle plus proche deO(nJournaln).

Optimiseur
la source
1
Allez-vous en!! Nous, profs CS, vivons de l'enseignement d'algorithmes sophistiqués, votre suggestion nous laisserait sans travail!
vonbrand
Eh bien ... qu'attendez-vous de l'IA alors?
Optimiser
Le tri à bulles n'est pas une fonction booléenne. Pire, tous les algorithmes de tri ne sont pas équivalents! Par exemple, certains ne sont pas stables.
Yuval Filmus
Vous avez tout à fait raison, mais le tri à bulles et le "bon tri" ne sont qu'un exemple de ce que je vois comme entrée et sortie, ne nous concentrons pas sur les détails.
Optimiser
@YuvalFilmus retournant sûrement un tableau trié n'est pas plus facile que de renvoyer vrai ou faux
vonbrand

Réponses:

11

Recherchez le théorème d'accélération de Blum (oui, cet article est moins qu'informatif; regardez un livre sur la théorie de la complexité). Il dit essentiellement qu'il existe des programmes pour lesquels il existe un programme qui fait le même travail qui est plus rapide par n'importe quelle marge spécifiée pour presque toutes les données d'entrée.

Selon le théorème de Rice , il est impossible de savoir si deux programmes donnés font le même travail.

Oui, pour certaines notions très restreintes de "programme", étant donné un exemple, on peut construire le "meilleur programme" possible pour le travail. Des cours importants, même. Mais très loin de tout ce qui est capable d'exprimer des bulles.

vonbrand
la source