Examen première session – 17 mai 2019

Durée 2h, documents autorisés

Mediane

On cherche un algorithme pour calculer la médiane d’une liste d’entiers.

Rappel : la médiane d’une liste de longueur est un élément tel que il y a dans au plus entiers strictement plus petits que et au plus strictement plus grands que .

: Proposer un algorithme qui fait appel à une procédure de tri. Quelle est sa complexité ?

: Donner un exemple de son exécution sur la liste .

: Proposer un algorithme de complexité en moyenne. Justifier la complexité.

: Donner un exemple de son exécution sur la liste .

Graphes

On considère le graphe non-orienté ci-dessous:

: Le graphe est-il connexe? Complet?

: Trouver un arbre couvrant minimal, par l’algorithme de Prim ou de Kruskal, au choix. Détailler les étapes de l’algorithme: en quel ordre sont sélectionnées les arêtes ?

: Trouver le chemin le plus court entre b et g par l’algorithme de Dijkstra. Détailler les étapes de l’algorithme: comment évoluent les informations attachées aux nœuds au fil de l’exécution?

: Proposer un algorithme qui détecte si un graphe est acyclique.

String matching

: Quelles sont les chaînes de caractères sur l’alphabet {a,b} acceptées par l’automate ci-dessous ? (0 est l’état initial)

: Donner la liste des états visités successivement par l’automate lorsqu’il reçôit en entrée la chaîne bbaaababba. Cette chaîne est-elle acceptée ?

: Dessinner un automate reconnaissant les occurrences du motif ababa.

: Proposer un algorithme qui reconnaît tous les mots contenant le motif aba ou le motif bab, en faisant une seule passe sur la chaîne de caractères en entrée.

Programmation linéaire

On considère le programme linéaire suivant :

Minimiser
Sous

.

: Mettre le programme linéaire sous forme relaxée en ajoutant des variables de relaxation.

: Trouver la solution du programme linéaire en détaillant les étapes de l’algorithme du simplexe.