Les deux points les plus proches



Documents pareils
Théorie des graphes et optimisation dans les graphes

Programmation en Caml pour Débutants

Simulation Matlab/Simulink d une machine à induction triphasée. Constitution d un référentiel

Chapitre. Chapitre 12. Fonctions de plusieurs variables. 1. Fonctions à valeurs réelles. 1.1 Définition. 1.2 Calcul de dérivées partielles

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

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

Recherche dans un tableau

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives

Dérivées et intégrales non entières

INF601 : Algorithme et Structure de données

Architecture des Systèmes d Information Architecture des Systèmes d Information

1 Recherche en table par balayage

# 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>

Optimisation non linéaire Irène Charon, Olivier Hudry École nationale supérieure des télécommunications

Image d un intervalle par une fonction continue

Chapitre VI Contraintes holonomiques

Algorithmique et structures de données I

Rappels sur les suites - Algorithme

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

CNAM UE MVA 210 Ph. Durand Algèbre et analyse tensorielle Cours 4: Calcul dierentiel 2

Feuille TD n 1 Exercices d algorithmique éléments de correction

3 Approximation de solutions d équations

GAMMES BIEN RÉPARTIES ET TRANSFORMÉE DE FOURIER DISCRÈTE. Emmanuel AMIOT 1

6 Equations du première ordre

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Chp. 4. Minimisation d une fonction d une variable

Algorithmique I. Algorithmique I p.1/??

Seconde Généralités sur les fonctions Exercices. Notion de fonction.

IMPLEMENTATION D UN SYSTEME D INFORMATION DECISIONNEL

ARBRES BINAIRES DE RECHERCHE

Cours d algorithmique pour la classe de 2nde

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

TP MESURES AUDIO - BANC DE MESURE AUDIOPRECISION ATS-2. Clément Follet et Romain Matuszak - Professeur : Dominique Santens

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

SSNV143 - Traction biaxiale avec la loi de comportement BETON_DOUBLE_DP

IMAGES NUMÉRIQUES MATRICIELLES EN SCILAB

Baccalauréat S Antilles-Guyane 11 septembre 2014 Corrigé

STAGE IREM 0- Premiers pas en Python

4. Les structures de données statiques

Calcul intégral élémentaire en plusieurs variables

Recherche par similarité dans les bases de données multimédia : application à la recherche par le contenu d images

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Initiation à la programmation en Python

Complément d information concernant la fiche de concordance

Optimisation, traitement d image et éclipse de Soleil

Université Paris-Dauphine DUMI2E 1ère année, Applications

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

TP1 Méthodes de Monte Carlo et techniques de réduction de variance, application au pricing d options

Limites finies en un point

Utilisation d objets : String et ArrayList

Relation d ordre. Manipulation des relations d ordre. Lycée Pierre de Fermat 2012/2013 Feuille d exercices

Licence Sciences et Technologies Examen janvier 2010

I. Ensemble de définition d'une fonction

Fonctions de plusieurs variables, intégrales multiples, et intégrales dépendant d un paramètre

Algorithmique et Programmation, IMA

Texte Agrégation limitée par diffusion interne

Cours d Analyse. Fonctions de plusieurs variables

ÉPREUVE COMMUNE DE TIPE Partie D

Approche Contract First

et les Trois Marches d'assurance

Vérification de programmes et de preuves Première partie. décrire des algorithmes

Chapitre 2 Le problème de l unicité des solutions

Logiciel SCRATCH FICHE 02

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

BACCALAURÉAT GÉNÉRAL SESSION 2012 OBLIGATOIRE MATHÉMATIQUES. Série S. Durée de l épreuve : 4 heures Coefficient : 7 ENSEIGNEMENT OBLIGATOIRE

Durée de L épreuve : 2 heures. Barème : Exercice n 4 : 1 ) 1 point 2 ) 2 points 3 ) 1 point

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Le langage SQL Rappels

Contexte. Pour cela, elles doivent être très compliquées, c est-à-dire elles doivent être très différentes des fonctions simples,

Le théorème de Perron-Frobenius, les chaines de Markov et un célèbre moteur de recherche

CONCOURS D ENTREE A L ECOLE DE 2007 CONCOURS EXTERNE. Cinquième épreuve d admissibilité STATISTIQUE. (durée : cinq heures)

Exo7. Matrice d une application linéaire. Corrections d Arnaud Bodin.

CHAPITRE V SYSTEMES DIFFERENTIELS LINEAIRES A COEFFICIENTS CONSTANTS DU PREMIER ORDRE. EQUATIONS DIFFERENTIELLES.

Polynômes à plusieurs variables. Résultant

Exercice autour de densité, fonction de répatition, espérance et variance de variables quelconques.

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

Algorithmes récursifs

Cours 1 : Qu est-ce que la programmation?

Statistique : Résumé de cours et méthodes

Système d Information

Autoroute A16. Système de Repérage de Base (SRB) - Localisation des Points de repère (PR) A16- A16+

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

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

SUJET ZÉRO Epreuve d'informatique et modélisation de systèmes physiques

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

Cryptographie RSA. Introduction Opérations Attaques. Cryptographie RSA NGUYEN Tuong Lan - LIU Yi 1

DÉRIVÉES. I Nombre dérivé - Tangente. Exercice 01 (voir réponses et correction) ( voir animation )

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

Baccalauréat ES/L Métropole La Réunion 13 septembre 2013 Corrigé

Peut-on tout programmer?

CORRIGES DES CAS TRANSVERSAUX. Corrigés des cas : Emprunts

Quelques algorithmes simples dont l analyse n est pas si simple

Resolution limit in community detection

CONSTANTES DIELECTRIQUES

Corrigé des TD 1 à 5

Transmission d informations sur le réseau électrique

Intégration et probabilités TD1 Espaces mesurés Corrigé

Transcription:

MPSI Option Informatique Année 2001, Deuxième TP Caml Vcent Simonet (http://cristal.ria.fr/~simonet/) Les eux pots les plus proches Lors e cette séance, nous allons nous téresser au problème suivant : étant onné un ensemble e pots u plan, entifier le couple e pots les plus proches au sens e la istance eucliienne. Ce type algorithme voit son utilité ans les transports aériens ou maritimes par exemple. Nous représenterons un pot en Caml par un couple e flottants (x, y) représentant ses cooronnées ans un repère orthonormé. L ensemble es pots consiérés sera quant à lui stocké ans un tableau t. Nous supposerons toujours que tous les couples stockés ans t sont istcts. 1 Une première solution Consiérons eux pots p et p e cooronnées respectives (x, y) et (x, y ). Leur istance eucliienne est onnée par la formule p p = (x x ) 2 + (y y ) 2. Question 1 Écrivez une fonction ist qui calcule la istance eucliienne séparant eux pots. Une méthoe «naïve» permettant e étermer les eux pots les plus proches ans un tableau t consiste à consiérer successivement tous les couples e pots possibles, ce qui peut se faire facilement à l aie e eux boucles for. Question 2 Écrivez une fonction plus proches qui pr pour argument un tableau e pots t et retourne un couple e pots ((x, y), (x, y )) situés à une istance mimale l un e l autre. Vous pourrez Commencer par créer une référence (itialisée par exemple avec ist t.(0) t.(1)) qui contira tout au long u éroulement e l algorithme la plus petite istance trouvée ; asi que eux références s i et s j contenant les ices es pots qui permettent attere cette istance. Utiliser eux boucles imbriquées pour consiérer tous les couples e pots communs. Mettre à jour les trois références à chaque fois qu un couple (i, j) tel que t.(i) t.(j) <! est trouvé. Question 3 Évaluez le coût un appel à la fonction plus proches en fonction e la taille u tableau t. Nous allons matenant nous téresser à la mise au pot un algorithme permettant e résoure ce même problème en temps O(n log n). Cet algorithme nécessite e isposer e eux copies u tableau t, l une triée par abscisses croissantes et l autre par oronnées croissantes. Nous allons onc écrire ans un premier temps quelques fonctions permettant e trier un tableau. 2 Tri un tableau Soit t = [ ; x 1 ;... ; x n 1 ] un tableau. Trier t consiste à permuter le contenu es cases u tableau t e façon à obtenir le tableau [ x σ(0) ; x σ(1) ;... ; x σ(n 1) ] avec x σ(0) x σ(1)... x σ(n 1). L algorithme e tri par sélection aopte le prcipe suivant : pour i variant e 0 à n 2, chercher l ice k i e la case e la partie u tableau située à roite e la case i contenant le plus petit élément ; puis permuter le contenu es cases k et i. c Vcent Simonet 2001 Ce ocument est istribué selon les termes e la GNU Free Documentation License.

Par exemple, pour trier le tableau [ 4; 3; 1; 2 ], on passe par les étapes suivantes : [ 4; 3; 1; 2 ] i = 0 k = 2 [ 1; 3; 4; 2 ] i = 1 k = 3 [ 1; 2; 4; 3 ] i = 2 k = 3 [ 1; 2; 3; 4 ] Question 4 Écrivez une fonction swap qui pr pour argument un tableau t, eux entiers a et b et permute le contenu es cases ices a et b. Votre fonction ne créera pas un nouveau tableau, elle se contentera e moifier sur place le tableau t. Elle sera onc e type a vect t t unit. Question 5 Écrivez une fonction sel qui pr pour argument un tableau t ; eux entiers a et b et retourne l ice e la case u sous-tableau t.(a)... t.(b) qui contient le plus petit élément pour l orre <. Question 6 Déuisez-en une fonction tri qui effectue le tri un tableau. La fonction que vous venez écrire vous permet e trier un tableau pour la relation orre <. Sur les couples, cet orre est en Caml l orre lexicographique. On peut cepant imager autres relations orre sur es couples, comme par exemple : l e t orre x ( x, y ) ( x, y ) = x < x l e t orre y ( x, y ) ( x, y ) = y < y Question 7 Aaptez les fonctions sel et tri e sorte qu elle prennent également en argument une fonction implantant une relation orre (comme orre x ou orre y). 3 Diviser pour régner Nous revenons matenant à notre premier problème, étermer parmi un ensemble e pots un couple e pots situés à une istance mimale. Nous supposons que nous isposons e eux copies e l ensemble es n pots : un tableau t x, trié par abscisses croissantes, un tableau t y, trié par oronnées croissantes. On pose k = n/2 et on consière les eux sous-tableaux t 1 = [ t.(0);... ; t.(k) ] et t 2 = [ t.(k + 1);... ; t.(k + 2) ]. Soit un flottant plus gran que les abscisses es pots e t 1 et plus petit que les abscisses es pots e t 2. Le plan est ivisé en eux parties : Notons p 1 = (x 1, y 1 ) et p 1 = (x 1, y 1) les eux pots les plus proches ans le tableau t 1 (avec x 1 x 1) asi que p 2 = (x 2, y 2 ) et p 2 = (x 2, y 2) eux pots les plus proches ans t 2. On note = m( p 1 p 1, p 2 p 2 ). Si eux pots u tableau t sont à une istance strictement férieure à alors nécessairement l un fait partie e t 1 et l autre e t 2 et ils sont ans la bane abscisses [ ; + ]. p 1 p 1 p 2 p 2 Question 8 Écrivez une fonction qui pr pour argument un tableau t y asi que eux flottants x m, x max et qui sélectionne ans ce tableau les pots ont l abscisse est comprise entre x m et x max. Le résultat sera ru ans un tableau t z. Notons t z le tableau es pots situé ans la bane, obtenu grâce à un appel à la fonction précéente. Dans chaque tranche e hauteur e cette bane, il ne peut y avoir plus e 7 pots. On en éuit que si eux pots e t z sont à une istance férieure ou égale à alors ils sont situés à au plus sept cases l un e l autre ans le tableau t z. Question 9 Écrivez une fonction plus proches centre qui pr pour argument le tableau t z et retourne le couple e pots les plus proches, tels que ces eux pots soient situés à au plus 7 cases l un e l autre ans le tableau t z. Vous pourrez vous spirer e la fonction plus proches précéente. On éuit e ce qui précèe un algorithme récursif permettant e trouver les eux pots les plus proches à partir es eux tableaux t x et t y : 1. Découper le tableau t x en eux tableaux t x,1 et t x,2 e longueur moitié. 2. Détermer p 1 = (x 1, y 1 ), p 1 = (x 1, y 1), p 2 = (x 2, y 2 ) et p 2 = (x 2, y 2) asi que la istance. 3. Calculer t z. S il contient au mos eux pots, appliquer la fonction plus proches centre à t z pour obtenir p = (x, y) et p = (x, y ). 2

4. Retourner le résultat, c est à ire la paire e pots à istance mimale parmi p 1, p 1 ; p 2, p 2 et p, p. Question 10 Écrivez en appliquant ce procéé une nouvelle fonction plus proches. Évaluez sa complexité en fonction u nombre e pots. 3

MPSI Option Informatique Année 2001, Deuxième TP Caml Vcent Simonet (http://cristal.ria.fr/~simonet/) Les eux pots les plus proches Un corrigé Question 1 On utilise la fonction sqrt e Caml qui permet e «calculer» la race carrée un flottant et l opérateur. exponentiation. l e t i s t ( x, y ) ( x, y ) = s q r t ( ( x. x ). 2. 0 +. ( y. y ). 2. 0 ) l e t s e l t a b = l e t r = r e f a for i = a + 1 to b o i f t. ( i ) < t. (! r ) then r := i! r Question 2 Notre fonction se contente envisager tous les couples entiers (i, j) avec 0 i < j n 1 à l aie e eux boucles for imbriquées. La référence contient à chaque stant la plus petite istance trouvée et les références s i et s j les ices es eux pots la réalisant. Question 4 l e t plus proches t = l e t n = vect length t an = r e f ( i s t t. ( 0 ) t. ( 1 ) ) an s i = r e f 0 an s j = r e f 1 for j = i + 1 to ( n 1) o i f i s t t. ( i ) t. ( j ) <! then := i s t t. ( i ) t. ( j ) ; s i := i ; s j := j ( t. (! s i ), t. (! s j )) l e t swap t a b = l e t x = t. ( a ) t. ( a) < t. ( b ) ; t. ( b) < x ; Question 5 La référence r contient à chaque itération l ice e la case contenant le plus petit élément parmi t.(a)... t.(i). Question 6 Question 7 Question 8 l e t t r i t = l e t n = vect length t l e t k = s e l t i ( n 1) swap t i k l e t s e l comp t a b = l e t r = r e f a for i = a + 1 to b o i f comp t. ( i ) t. (! r ) then r := i! r l e t t r i comp t = l e t n = vect length t l e t k = s e l comp t i ( n 1) swap t i k l e t selectionne ty x m x max = l e t n = vect length ty l e t r e s u l t a t = r e f [ ] for i = n 1 ownto 0 o i f x m <= f s t ty. ( i ) && f s t ty. ( i ) <= x max then r e s u l t a t := ty. ( i ) : : (! r e s u l t a t ) v e c t o f l i s t (! r e s u l t a t )

Question 9 Notre fonction plus proches centre est très semblable à la fonction plus proches. La seule ifférence résie ans la borne supérieure e la boucle exée par j : il n est plus nécessaire e poursuivre jusqu à j = n 1 mais on peut se limiter à j = m(n 1, i + 7). l e t plus proches centre t = l e t n = vect length t an = r e f ( i s t t. ( 0 ) t. ( 1 ) ) an s o l u t i o n i = r e f 0 an s o l u t i o n j = r e f 1 for j = i + 1 to m ( n 1) ( i + 7) o i f i s t t. ( i ) t. ( j ) <! then := i s t t. ( i ) t. ( j ) ; s o l u t i o n i := i ; s o l u t i o n j := j ( t. (! s o l u t i o n i ), t. (! s o l u t i o n j )) Question 10 l e t rec plus proches tx ty = l e t n = vect length tx i f n <= 3 then ( plus proches tx ) e l s e l e t tx1 = sub vect t ( n/2) an tx2 = sub vect tx ( n /2) ( n n/2) an x0 = f s t tx. ( n/2 1) l e t p1, p1 = plus proches tx1 ty an p2, p2 = plus proches tx2 ty l e t p12, p12 = i f ( i s t p1 p1 ) < ( i s t p2 p2 ) then ( p1, p1 ) e l s e ( p2, p2 ) l e t = i s t p12 p12 l e t tz = s e l e c t i o n n e ty (max ( x0. ) ( f s t tx. ( 0 ) ) ) (m ( x0 +. ) ( f s t tx. ( n 1))) i f vect length tz <= 1 then ( p12, p12 ) e l s e l e t p, p = plus proches centre tz i f i s t p p < then ( p, p ) e l s e ( p12, p12 ) 2