Upgrade to Pro — share decks privately, control downloads, hide ads and more …

QuadTrees with OCaml

Paul Chobert
October 16, 2011

QuadTrees with OCaml

Paul Chobert

October 16, 2011
Tweet

More Decks by Paul Chobert

Other Decks in Research

Transcript

  1. Collections de points Comment stocker des points efficacement? • Avec

    des listes let points = [(0,1);(0,4);(1,1);(1,3);(3,4);(4,3)]
  2. Collections de points Comment stocker des points efficacement? • Avec

    des listes let points = [(0,1);(0,4);(1,1);(1,3);(3,4);(4,3)] • Avec des matrices false true false false true false true false true false false false false false false false false false false true false false false true false
  3. Avec des listes Recherche de point 1 let rec recherche

    p l= 2 match l with 3 [] -> false 4 | t::q -> 5 p=t || p>t && (recherche p q);;
  4. Avec des listes Recherche de point • Utilisation mémoire faible…

    1 let rec recherche p l= 2 match l with 3 [] -> false 4 | t::q -> 5 p=t || p>t && (recherche p q);;
  5. Avec des listes Recherche de point • Utilisation mémoire faible…

    • … mais algorithme pas efficace. 1 let rec recherche p l= 2 match l with 3 [] -> false 4 | t::q -> 5 p=t || p>t && (recherche p q);;
  6. Avec des matrices Recherche de point • Recherche de point

    presque instantanée… 1 let recherche (x,y) m= 2 m.(x).(y);;
  7. Avec des matrices Recherche de point • Recherche de point

    presque instantanée… • … mais utilisation mémoire catastrophique. 1 let recherche (x,y) m= 2 m.(x).(y);;
  8. -1 1 3 5 7 9 11 1 10 100

    1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 11000 12000 13000 14000 15000 20000 30000 Temps en secondes performances PQuadTree Listes
  9. - Lecture séquentiel du codage 1::0::reste -> q = push

    (Uni Blanc) q | 1::1::reste -> q = push (Uni Noir) q | 0::reste -> q = push (RQ(Vide,Vide,Vide,Vide)) q | [] -> q
  10. - Lecture séquentiel du codage 1::0::reste -> q = push

    (Uni Blanc) q | 1::1::reste -> q = push (Uni Noir) q | 0::reste -> q = push (RQ(Vide,Vide,Vide,Vide)) q | [] -> q =>