La programmation dynamique et l edit-distance



Documents pareils
Equations cartésiennes d une droite

Master IAD Module PS. Reconnaissance de la parole (suite) Alignement temporel et Programmation dynamique. Gaël RICHARD Février 2008

PROJET ALGORITHMIQUE ET PROGRAMMATION II

III- Raisonnement par récurrence

Plus courts chemins, programmation dynamique

Exemples de problèmes et d applications. INF6953 Exemples de problèmes 1

Définitions. Numéro à préciser. (Durée : )

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

Exercice : la frontière des portefeuilles optimaux sans actif certain

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que

Les structures de données. Rajae El Ouazzani

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

La mesure de Lebesgue sur la droite réelle

Les arbres binaires de recherche

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Programmation linéaire et Optimisation. Didier Smets

LE PROBLEME DU PLUS COURT CHEMIN

L utilisation d un réseau de neurones pour optimiser la gestion d un firewall

SOMMAIRE 1 INTRODUCTION 3 2 CONTACTER VOTRE SUPPORT 3 3 ESPACE DE GESTION DES CARTES 4 4 CONFIGURER UNE CARTE 5

Nouveautés dans Excel 2013

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

ÉPREUVE COMMUNE DE TIPE Partie D

Compléments de documentation Scilab : affichage de texte et formatage de nombres

Soit la fonction affine qui, pour représentant le nombre de mois écoulés, renvoie la somme économisée.

Utilisation d objets : String et ArrayList

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

LA PHYSIQUE DES MATERIAUX. Chapitre 1 LES RESEAUX DIRECT ET RECIPROQUE

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

CH.6 Propriétés des langages non contextuels

Chapitre 5 : Flot maximal dans un graphe

Exercices du Cours de la programmation linéaire donné par le Dr. Ali DERBALA

Gestion des fichiers sur micro-ordinateur

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

AWS avancé. Surveiller votre utilisation d EC2

Bases de données relationnelles

REUNION INFORMATIQUE 15/09/12 Utilisation Messagerie «Webmail 2» I ) Préambule : Pourquoi l utilisation d une messagerie commune?

Gestion d utilisateurs et stratégie systèmes.

Méthode universitaire du commentaire de texte

GPA770 Microélectronique appliquée Exercices série A

Métriques de performance pour les algorithmes et programmes parallèles

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

Développement décimal d un réel

Sauvegarde collaborative entre pairs Ludovic Courtès LAAS-CNRS

Introduction. I Étude rapide du réseau - Apprentissage. II Application à la reconnaissance des notes.

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Capacité d un canal Second Théorème de Shannon. Théorie de l information 1/34

Probabilités stationnaires d une chaîne de Markov sur TI-nspire Louis Parent, ing., MBA École de technologie supérieure, Montréal, Québec 1

CONDITIONS PARTICULIERES

TP : Gestion d une image au format PGM

Perl Orienté Objet BioPerl There is more than one way to do it

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Modèles à Événements Discrets. Réseaux de Petri Stochastiques

Alarme domestique- Présentation

B2i Brevet Informatique. Internet. Livret de l enseignant

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

T. A. D. pile. Chapitre 7 (suite) Listes particulières. T. A. D. file. représentation chaînée de la file algorithmique. Files

Python - introduction à la programmation et calcul scientifique

Chap III : Les tableaux

CONDITIONS GENERALES DE VENTE

3 Approximation de solutions d équations

I Stabilité, Commandabilité et Observabilité Introduction Un exemple emprunté à la robotique Le plan Problème...

Groupe symétrique. Chapitre II. 1 Définitions et généralités

Suites numériques 3. 1 Convergence et limite d une suite

Cours 02 : Problème général de la programmation linéaire

Introduction au maillage pour le calcul scientifique

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

INF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies

Guide d utilisation en lien avec le canevas de base du plan d intervention

I. Cas de l équiprobabilité

Peut-on imiter le hasard?

Si un quadrilatère a. Si un quadrilatère a. Si un quadrilatère a. Si un quadrilatère a. ses côtés opposés. ses côtés opposés de. deux côtés opposés

Système à enseigner : Robot M.I.M.I. MultipodeIntelligent à Mobilité Interactive. Version 1.0

Indications pour une progression au CM1 et au CM2

Baccalauréat L spécialité, Métropole et Réunion, 19 juin 2009 Corrigé.

Pi, poker et informatique ; une «épuisante» alliance pour des projets en mathématiques

Cours d Analyse. Fonctions de plusieurs variables

Eléments de Théorie des Graphes et Programmation Linéaire

Guide du maître MODULE TICE. Recherche sur Internet. Mise en forme d exposé et insertion d image. Envoi de fichiers joints

Initiation à LabView : Les exemples d applications :

Programmation linéaire

Fascicule 1.

Programme awk------introduction rapide

Résolution de systèmes linéaires par des méthodes directes

Toute utilisation du site doit respecter les présentes conditions d utilisation.

Présentation du langage et premières fonctions

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

Adama MBODJI MBODJ.SYSTEM

Deux disques dans un carré

Résolution d équations non linéaires

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Les structures. Chapitre 3

Les différents types de données et leurs opérations de base

Algorithmique et Programmation

Création d un site Internet

NOTIONS DE PROBABILITÉS

INF601 : Algorithme et Structure de données

SCIENCES PO BORDEAUX. Réunion de rentrée 2014 Quatrième année

MIS 102 Initiation à l Informatique

ÉVALUATION FORMATIVE. On considère le circuit électrique RC représenté ci-dessous où R et C sont des constantes strictement positives.

Transcription:

La programmation dynamique et l edit-distance Christine Decaestecker (ULB) & Marco Saerens (UCL) LINF75 1 1

Programmation dynamique Nous avons un treilli: 3 3 3 1 1 1 0 3 4 3 1 3 0 3 1 5 3 3 1 3 LINF75 0

Programmation dynamique Quelques définitions Coût associé à la décision de passer à l état s=j au niveau k Etant donné que nous étions dans l état s=i au niveau k 1 LINF75 3

Programmation dynamique Coût total d un chemin Coût optimal à partir de l état s 0 LINF75 4

Programmation dynamique Coût optimal quel que soit l état de départ Coût optimal à partir d un état d un niveau quelconque LINF75 5

Programmation dynamique Relations de récurrence à appliquer: LINF75 6

Programmation dynamique Graphiquement: S = i+1 k+1 S = i k S = i k+1 S = i 1 k+1 LINF75 7

Programmation dynamique 0 Exemple: 5 1 4 3 1 4 4 3 1 4 4 5 LINF75 8 5

Programmation dynamique Démonstration LINF75 9

Programmation dynamique De manière symmétrique: LINF75 10

Programmation dynamique S il y a des sauts de niveau Où représente les états vers lesquels l on peut se rendre à partir LINF75 de s k = i 11

Programmation dynamique LINF75 1

Calcul de la distance entre deux chaînes de caractères Calcule le nombre minimal d insertions, de suppressions et de substitutions Pour passer d une chaîne de caractères x à une autre chaîne de caractères y LINF75 13

Egalement appelé distance de Levenstein Soit deux chaînes de caractères x i étant le i-ème caractère de la chaîne x LINF75 14

La longueur de la chaîne x est notée x En général, nous avons Une sous-chaîne est définie par LINF75 15

Nous allons lire un à un les caractères de la chaîne x pour construire progressivement la chaîne y Nous définissons pour ce faire trois opérations d édition: Insertion d un caractère dans y (sans piocher dans x) Suppression d un caractère de x (sans la concaténer à y) Substitution d un caractère de y par celle de x LINF75 16

Première convention: Signifie que nous avons lu les i 1 premiers caractères de x Et donc x est amputé de ses i 1 premiers caractères Nous les avons piochés pour alimenter y LINF75 17

Deuxième convention: Signifie que les j premiers caractères de y ont été transcrits Nous lisons donc progressivement des caractères de x pour écrire y LINF75 18

Il s agit d un processus à niveaux (étapes) et états Nous pourrons donc appliquer la programmation dynamique Un état est donc caractérisé par le couple (i, j) LINF75 19

Voici la définition des trois opérations Pour les deux premières opérations, on passe du niveau k au niveau k+1 Pour la dernière, on passe au niveau k+ (l on saute un niveau) LINF75 0

Nous représentons la situation par un tableau à deux dimensions Un niveau est représenté par (i + j) = cte Un état est représenté par (i, j) Une opération est représentée par une transition dans ce tableau LINF75 1

Exemple de tableau correspondant au calcul de la distance entre livre et lire LINF75

Un niveau correspond à une diagonale: (i + j) = cte LINF75 3

Nous introduisons un coût (ou pénalité) associé à chaque opération (insertion, suppression, substitution) Avec LINF75 4

Nous pouvons appliquer les formules de programmation dynamique: Initialement: Ensuite: LINF75 5

Et finalement: Cette valeur est appelée edit-distance ou distance de Levenstein LINF75 6

Exemple à traiter dist(lire, livre) = 1 LINF75 7

Si l on veut connaître le chemin optimal (séquence optimale des opérations) Il faut maintenir, pour chaque état, un pointeur vers l état d où l on vient dans un tableau Les informaticiens ont développé de nombreuses améliorations de cet algorithme (plus rapides) LINF75 8