Vous êtes sur la page 1sur 22

Profilage gographique

Par The_Greek22

www.siteduzero.com

Licence Creative Commons BY-NC-SA 2.0 Dernire mise jour le 19/06/2011

2/23

Sommaire
Sommaire ........................................................................................................................................... 2 Profilage gographique ...................................................................................................................... 3
La thorie .......................................................................................................................................................................... 3
Un peu d'histoire ......................................................................................................................................................................................................... 3 Le jet d'arrosage .......................................................................................................................................................................................................... 3 L'tre humain et l'alatoire : une grande histoire d'amour ........................................................................................................................................... 4

La Formule ........................................................................................................................................................................ 4
Rigel ............................................................................................................................................................................................................................ 4 Fonctionnement gnral de la formule ........................................................................................................................................................................ 5 Le cur de la formule ................................................................................................................................................................................................. 7 The Buffer Zone ........................................................................................................................................................................................................ 10

Le Programme ................................................................................................................................................................. 13
Un problme de taille ................................................................................................................................................................................................ 13 Place la programmation ......................................................................................................................................................................................... 14 Aller plus loin ............................................................................................................................................................................................................. 20 Partager ..................................................................................................................................................................................................................... 21

www.siteduzero.com

Sommaire

3/23

Profilage gographique

Par

The_Greek22

Mise jour : 19/06/2011 Difficult : Intermdiaire

Dure d'tude : 45 minutes

34 visites depuis 7 jours, class 691/782 Bonjour tous ! Je vais vous prsenter dans ce tutoriel le profilage gographique. Le profilage gographique est une technique notamment utilise par la police pour retrouver des serial killers. Ce qu'elle a d'intressant, c'est qu'elle met en vidence la manire dont trois branches paraissant plus ou moins loignes sont utilises de concert dans un mme but. En effet, le profilage gographique est un excellent exemple montrant comment les sciences humaines, les mathmatiques et l'informatique s'unissent pour combattre un ennemi commun (ou pas) : les serial killers. Nous commencerons par voir comment fonctionne le profilage gographique en thorie, puis nous analyserons en dtail les mathmatiques qui se cachent derrire. Et finalement, nous coderons nous-mmes un programme de profilage gographique avec ces connaissances nouvellement acquises. En ce qui concerne la programmation, je vais tenter d'expliquer le tout en restant le plus gnral possible pour que vous puissiez utiliser le langage et la bibliothque graphique que vous voulez. Nanmoins, les exemples seront donns en C avec la bibliothque SDL.

Du ct des prrequis pour la partie mathmatique, il n'y a rien de bien compliqu, mais ce n'est pas extrmement simple non plus. Je m'efforcerai bien entendu d'tre le plus clair possible, mais il faut quand mme connatre quelques bases, telles que le thorme de Pythagore, les fractions, la rgle de trois etc. Alors, vous tes prts chasser des serial killers ? J'espre que vous tes bien arms, car ils sont dangereux ! Sommaire du tutoriel :

La thorie La Formule Le Programme

La thorie Un peu d'histoire


Le profilage gographique est une technique dveloppe dans les annes 90 par Kim Rossmo, un mathmaticien policier. Il est le premier avoir eu une approche diffrente dans les enqutes concernant les serial killers. En effet, les mathmaticiens criminologues de l'poque essayaient de crer un modle mathmatique qui leur permettrait de dterminer le lieu du prochain crime d'un serial killer. Mais Rossmo a trs vite compris que cette ide tait quasiment irralisable, car il y avait trop de variables en jeu. Il eut alors l'ide de faire la dmarche contraire : plutt que d'essayer de prdire le lieu du prochain crime, il a cherch trouver le lieu de rsidence du criminel .

Le jet d'arrosage

www.siteduzero.com

Profilage gographique

4/23
Pour illustrer cette ide, on emploie souvent la mtaphore du jet d'arrosage. En effet, il est impossible de savoir o va tomber chaque goutte d'eau du jet. Il est aussi impossible de prdire l'endroit o le tueur va commettre son prochain crime. En revanche, en analysant le motif form par les gouttes d'eau, il est possible de dterminer leur origine. C'est ce que l'on fait lorsque l'on effectue le profilage gographique d'un serial killer. Via les coordonnes gographiques de chacun de ses crimes, on essaie de dterminer l'endroit o il habite. Cette technique fonctionne trs bien : des analyses comportementales ont prouv que les serial killers ont une prdisposition commettre leurs crimes prs de chez eux, mais pas trop prs non plus (nous y reviendrons). Ainsi, en gnral, plus on s'loigne du lieu du crime, plus la probabilit qu'il s'agisse de la

Jet d'arrosage zone de rsidence du criminel diminue.

L'tre humain et l'alatoire : une grande histoire d'amour


Un autre problme avec les humains, qui nous arrange bien dans ce cas, est la difficult qu'ils rencontrent imiter l'alatoire. En effet, les serial killers ont tendance chercher commettre leurs crimes de manire alatoire pour tromper la police. Mais ils vont ainsi crer un motif uniforme ( l'instar des gouttes d'eau autour du jet), qui sera tout sauf alatoire. Il est donc relativement facile de crer un modle mathmatique qui permettra de situer le lieu de rsidence du criminel partir du motif form par les lieux des crimes. Observez ces deux images illustrant mes propos. Si je demande une personne quelconque de dessiner des points de manire alatoire, il y a normment de chances qu'elle me dessine quelque chose ressemblant l'image de gauche. Mais un il un peu critique remarquera trs vite que cela n'a rien voir avec de l'alatoire. Une meilleure simulation de l'alatoire, que l'on pourrait qualifier d' alatoire naturel , est quelque chose qui ressemblerait plutt l'image de droite.

Alatoire humain ( gauche) et naturel ( droite)

La Formule
Maintenant que nous avons compris l'ide qui se cache derrire le profilage gographique, analysons son aspect un peu plus mathmatique.

Rigel
Je disais donc que, pour parvenir calculer le lieu de rsidence du serial killer, Rossmo a dvelopp une unique formule (la Formule de Rossmo ), qui permet de calculer la probabilit que le tueur en srie habite dans une certaine zone de la rgion concerne par les meurtres. En fait, le terme probabilit n'est pas le terme correct pour dsigner le rsultat que nous renvoie la formule. En effet, cette dernire calcule, pour chaque zone de la carte, une certaine valeur. Et ce que l'on va faire, c'est simplement relativiser les diffrentes valeurs entre elles. Donc, si par exemple la plus haute valeur correspond 2000, et la plus petite 1000, nous allons dfinir que la premire quivaut aux 100 %, et la seconde 0 %. Ainsi, la zone de valeur 1500 vaudra 50 %. Mme si j'utiliserai dans la suite, pour des raisons pratiques, le terme probabilit , il faudra comprendre qu'il s'agit d'une valeur relativise, qui indique quelles sont les zones o le tueur a le plus de chances d'habiter, par rapport aux autres secteurs de la carte.

www.siteduzero.com

Profilage gographique
Bref, la formule va ainsi nous permettre de modliser le comportement du serial killer en appliquant ce que l'on sait sur son mode opratoire (abrg aussi M.O. pour modus operandi en latin). Cette partie est bien entendu la plus difficile. Le travail du policier est de dterminer le profil psychologique le plus proche du serial killer. (Faut quand mme leur laisser faire du boulot ces policiers. Suffit pas de cliquer sur un bouton pour rsoudre un crime. )

5/23

Une fois que ce profil a t dtermin, il ne reste plus au policier qu' entrer les coordonnes des crimes dans un logiciel, ainsi que les autres informations sur le profil du serial killer (vous verrez de quoi je parle plus tard). Le programme s'occupera de calculer les probabilits sur une carte et coloriera les diffrentes valeurs de probabilits en une certaine couleur. Le logiciel en question s'appelle Rigel et est utilis partout dans le monde. Sur l'image ci-dessous, nous pouvons observer un exemple de profil gographique (les zones en rouge reprsentant des rgions forte probabilit, tandis que les secteurs violets sont moins probables).

Exemple de profilage gographique Bien entendu, ce qui nous intresse est de savoir comment fonctionne ce programme ! quoi, pas vous ?

Fonctionnement gnral de la formule


Nous abordons ici la partie difficile. Nous allons essayer de comprendre la Formule de Rossmo, qui permet d'afficher un profil gographique sur une carte. mes sensibles, s'abstenir, car a pique les yeux.

Ne vous inquitez pas, nous allons dcouvrir ensemble la signification de cette belle formule. Nanmoins, pour les personnes plus exprimentes, voici un court descriptif des symboles. : probabilit p que le tueur rside la coordonne (i;j). : nombre de crimes. : position du point de coordonnes (i;j). : coordonnes du crime n . : accentue ( ) ou diminue ( ) l'effet plus on s'loigne, plus la probabilit baisse . : accentue ( ) ou diminue ( ) l'effet de zone tampon . : rayon de la zone tampon.

Examinons prsent cette formule de faon plus dtaille. En premier lieu, imaginons la carte quadrille d'une rgion :

www.siteduzero.com

Profilage gographique

6/23

Carte

Lors d'applications relles, chaque carr du quadrillage correspondra videmment un pixel. Pour des raisons de lisibilit, j'ai utilis des carrs un peu plus gros.

V ous remarquez que chaque carr est dfini par les coordonnes i et j. La formule va en fait calculer pour chaque petit carr un un (carr qui sera, pour rappel, un pixel en ralit) la probabilit que le tueur y rside. La grosse formule que vous voyez ci-dessus devra ds lors tre applique l'ensemble des carrs de notre carte ! C'est pour cela qu'elle contient . Cela peut se traduire par : la probabilit p que le tueur rside dans le carr de coordonnes i et j . (Il est pas beau, le pouvoir qu'ont les maths de traduire une phrase en 3 symboles ? ) Observons donc par quel moyen la formule calcule cette probabilit. Tout d'abord, vous voyez ceci :

Le symbole est la lettre grecque sigma (majuscule) et signifie en mathmatiques faire une somme de tout ce qui se trouve entre crochets . En fait, pour comprendre comment a marche, sachez que le fonctionnement est similaire une boucle en programmation. La lettre que vous apercevez sous le sigma est la variable (ici, c'est la lettre n ). Cette variable va s'incrmenter chaque tour de boucle, la valeur de dpart tant la valeur indique sous le sigma (ici 1). La somme s'arrtera lorsque n sera gal au nombre indiqu au-dessus du sigma (la lettre c). V oici un rapide exemple pour que vous compreniez. Si l'on crit :

Cela signifie simplement : faire la somme de 1 + 2 + 3 + ... + 10 . Ou, si vous prfrez, en voici l'quivalent en C++ (c'est quasiment pareil pour la majorit des langages de programmation) : Code : C++ int resultat = 0; for(int n=1; n<=10; n++)

www.siteduzero.com

Profilage gographique
resultat+=n;

7/23

Bref, si vous avez dj programm, vous ne devriez pas avoir de mal saisir. Revenons-en notre formule. Si je vous dis maintenant que la lettre c signifie nombre de crimes , vous devriez tout de suite comprendre ce que ceci implique.

Cela exprime que, pour la case que l'on est en train d'analyser, on va calculer la probabilit (qui sera en fait une valeur, comme je l'ai indiqu plus haut) que le tueur y habite, ce que l'on va faire pour chaque crime. Puis, toujours pour chaque crime, on va additionner cette valeur, d'o la somme. Admettons donc que nous nous trouvions dans le carr (2;3), et que notre tueur ait commis 2 crimes. Nous allons en ce cas d'abord calculer la valeur dans ce carr pour le crime numro 1 (n=1) (disons que l'on trouve une valeur de 30). Ensuite, pour le mme carr, nous prendrons le crime numro 2 et calculerons la valeur (supposons que l'on obtienne 50). Alors, le rsultat total pour cette case sera 80. Ce sera nous ensuite de pondrer les diffrentes valeurs entre elles pour savoir quelles sont les cases les plus probables par rapport aux autres. Maintenant que vous avez compris cette partie de la formule, nous allons pouvoir nous intresser ce qui se trouve l'intrieur de la somme (c'est--dire tout ce qui est plac entre crochets). Car c'est cette partie de la formule qui calcule effectivement la probabilit. Pour la suite, gardez bien en tte que la formule entre crochets concerne un seul carr de coordonnes (i;j) et un seul crime n . Donc n est une variable qui correspond au numro du crime. Ainsi, si le tueur a tu 5 personnes, n=1 indiquera le crime numro 1 etc. Et c sera, dans mon exemple, videmment gal 5.

Le cur de la formule
Intressons-nous maintenant la partie de la formule qui calcule la probabilit pour le carr (i;j) et le crime n :

Si vous cherchez bien, vous verrez que les lettres i, j et n sont en indice : . Si vous avez bien compris le truc, vous devriez alors avoir devin ce que ces quatre symboles reprsentent. Ce sont des coordonnes. Ainsi, est la coordonne x du carr que l'on est en train d'analyser, et en est la coordonne y. Pour ceux qui ont la mmoire courte :

www.siteduzero.com

Profilage gographique

8/23

Carte

Et les coordonnes

Eh bien, ce sont les coordonnes x et y du crime numro n tout simplement. Si vous avez saisi cela, vous ne devriez pas avoir trop de mal dcrypter la premire fraction de la formule :

Bon, d'accord, peut-tre les lettres drangent-elles un peu. Ce sont en fait des constantes, notion que nous aborderons plus tard. Faisons donc abstraction de celles-ci et admettons que f vaille 1 et aussi. Nous obtenons en consquence :

En fait, le dnominateur de la fraction est quelque chose de bien connu : c'est la distance de Manhattan entre deux points. OK, pourquoi tu nous parles de New York maintenant ?

V ous allez comprendre. Tout d'abord, il faut savoir que la distance entre deux points peut se calculer de plusieurs manires, la plus utilise tant la distance euclidienne. La distance euclidienne n'est rien d'autre que la distance la plus courte entre deux points (en vert sur l'image). Ainsi, si le cercle rouge reprsente le lieu du crime et le cercle jaune le lieu que l'on est en train d'analyser, alors la distance d entre ces deux points se calcule de la sorte (c'est simplement le Thorme de Pythagore) :

www.siteduzero.com

Profilage gographique

9/23

D'accord. Mais pourquoi tu mentionnes un autre moyen de calculer les distances alors ?

Eh bien, moins que votre tueur ne soit un oiseau ou qu'il ait un jet priv, cette distance ne reprsente rien pour nous ! Imaginez que, sur le dessin ci-dessus, les zones grises soient des routes, et les zones blanches des btiments (ce qui est une approximation assez correcte de la gographie de Manhattan et de plusieurs grandes villes aux tats-Unis) : vous remarquez que notre distance euclidienne traverse les btiments. C'est pourquoi nous allons plutt nous orienter vers l'emploi de la distance de Manhattan (en bleu) pour calculer la distance entre deux points. Cette distance est beaucoup plus reprsentative pour un tueur qui se dplace pied ou en voiture (la plupart des cas donc ). Cette distance se calcule simplement : . L'observation de l'image suivante favorisera votre comprhension du concept, dans le cas o vous prouveriez des difficults le saisir. En effet, la distance en bleu est isomtrique celle en rouge. D'o la formule.

Les valeurs absolues permettent d'viter les distances ngatives, selon l'endroit o l'on pose l'origine sur notre carte.

Bref, si vous avez assimil que le dnominateur de notre fraction est la distance de Manhattan, alors vous devriez avoir compris l'utilit de cette premire partie de la formule. Elle simule tout bonnement le fait que, plus la distance entre le lieu du crime et la case que l'on analyse est grande, plus la probabilit que le tueur habite dans cette case est basse. Comme je vous le disais dans l'introduction, plus on s'loigne du lieu d'un crime, plus la probabilit que le tueur y habite diminue.

Pour la lettre grecque , nous verrons sa signification plus tard. En revanche, la lettre f qui se trouve l'exposant du dnominateur est plus facile comprendre. En fait, c'est une constante dtermine empiriquement en fonction du genre de tueur auquel on a affaire. V ous remarquez que si sa valeur est grande, alors la probabilit baissera mesure que l'on s'loigne du crime. De mme si l'on diminue la valeur de f , alors les probabilits vont dcroitre moins vite. Ainsi, si l'on a affaire un tueur qui aime beaucoup voyager, et qui, par peur, n'ose pas commettre ses crimes prs de chez lui, on pourrait carrment observer le phnomne inverse. On mettrait donc un f ngatif, ce qui reviendra dire que plus on s'loigne du crime, plus la probabilit que le tueur habite ici est grande.

Voici ce que l'on obtient si f=-1 Nanmoins, la majorit des tueurs vitent de tuer des gens l'autre bout de la plante pour des raisons pratiques (je suppose ). D'habitude, f sera donc positif et on considrera de manire gnrale que le comportement normal du tueur est plus je m'loigne du lieu du crime, moins j'ai de chances d'habiter ici .

www.siteduzero.com

Profilage gographique

10/23

The Buffer Zone


Passons maintenant la deuxime fraction. V ous vous rappelez qu'au dbut du chapitre, j'avais crit : Citation : Moi [] les serial killers ont une prdisposition commettre leurs crimes prs de chez eux, mais pas trop prs non plus. En ce qui concerne la premire partie de la phrase, il s'agit de ce que nous venons de dcouvrir. Nous devons maintenant simuler le fait que le tueur n'aille pas commettre le crime trop prs de son habitation non plus. (Si votre voisin meurt, vous avez de grandes chances que la police vienne vous dire bonjour ). La deuxime fraction a justement pour objectif de calculer ce que l'on appelle le buffer zone , ou, en franais, la zone tampon :

La zone tampon n'est rien d'autre qu'une zone autour du lieu d'un crime, dans laquelle on est quasiment certain que le tueur n'habite pas. L'image suivante illustre cette notion :

Zone tampon Imaginez que le centre de ce cercle soit le lieu du crime. On est alors quasiment sr que le tueur n'habite pas dans les parages (d'o la couleur blanche qui signifie ici probabilit 0). Cette zone blanche, ainsi que tous les cercles concentriques jusqu' la moiti du cercle jaune clair, est appele la zone tampon. Dans cette zone, on a donc l'effet inverse de ce que nous avons vu. Plus on s'loigne du lieu du crime, plus la probabilit s'accrot. Puis, au-del de cette zone tampon, on constate le phnomne que nous avions dj remarqu, et qui sous-tend que, plus on s'loigne, plus la probabilit devient faible (la zone jaune reprsentant une probabilit trs leve). Cet effet de zone tampon est simul par la deuxime fraction, et plus particulirement par la constante B, qui n'est rien d'autre que le rayon de zone tampon. Ainsi, mesure que la valeur de B augmente, la zone tampon s'agrandit. Sa valeur exacte doit encore une fois tre trouve par le policier en fonction du tueur. Si l'on a un tueur trs prcautionneux, alors B sera grand ; si le meurtrier se dchane peine sorti de chez lui, on aura un B trs faible.

Attention ! Le dessin des cercles que vous voyez plus haut utilise les distances euclidiennes. Ds lors, quand je fais mention d'un rayon, il faut essayer d'imaginer que ce rayon est en distances de Manhattan. Il est vrai que ce n'est pas facile concevoir, mais quand on change de manire de mesurer, a peut vite devenir tordu. Par exemple, si l'on dfinit un cercle comme tant l'ensemble des points qui sont la mme distance du centre, alors si la distance est euclidienne, on obtient un cercle tel que vous le connaissez. Mais si l'on fait cela en distances de Manhattan, la figure est un carr.

www.siteduzero.com

Profilage gographique

11/23

Cercle en distance de Manhattan et cercle en distance euclidienne Pour comprendre la distance de Manhattan, tentez de bien vous imaginer que vous n'avez pas le droit de vous promener en diagonale. V ous pouvez seulement vous dplacer horizontalement et verticalement, d'o la forme carre. Revenons-en notre formule :

L encore, faisons abstraction des constantes et crivons le dnominateur de manire simplifie :

Reprsentez-vous pour la suite que cette partie de la formule simule l'effet tampon pour un crime donn. Cette fraction ne concerne donc que les carrs qui se trouvent dans cette zone tampon. En d'autres termes, seuls ceux dont la distance de Manhattan est infrieure au rayon de la zone tampon. Ou, mathmatiquement, quand :

Nous allons dans quelques instants dcouvrir comment nous pouvons appliquer seulement une partie de la formule un certain groupe de cases. Ne vous inquitez pas.

Maintenant, si nous lisons bien le dnominateur de la fraction, nous remarquons que l'on soustrait la distance de Manhattan deux fois notre zone tampon (quivalent du diamtre). Cela permet donc de simuler l'effet de la zone tampon. En franais, cette fraction signifie : plus on s'loigne du lieu du crime, plus les probabilits augmentent en fonction de la distance, tant que l'on reste dans la zone tampon. Ds que l'on est arriv la frontire de la zone tampon, soit quand , on reprend l'autre fraction. Cette fois, on commence baisser les probabilits en fonction de la distance !

Hmm. Je vois. Et comment arrive-t-on passer d'une fraction l'autre ?

Alors a, c'est le symbole

qui s'en occupe. En fait, la formule de Rossmo s'crit :

www.siteduzero.com

Profilage gographique

12/23

En d'autres termes, si l'on se trouve hors de la zone tampon ( se passe-t-il si vaut 1 ? Eh bien, la deuxime fraction s'annule. En effet : (1-1) = 0. On obtient donc :

), alors

vaut 1. Que

Dans le cas contraire,

= 0. Dans cette ventualit, c'est la premire fraction qui s'annule. On obtient donc :

V ous devriez avoir assimil comment la formule peut tre applique selon le lieu o l'on se trouve. Sachez galement que la lettre g a le mme rle que la lettre f, qui permet d'accentuer (ou pas) cet effet de zone tampon. Finalement, nous avons encore devant nous ce qui nous drange. Ce point-l est plus dlicat. Prenons trois cas de figure. L'effet zone tampon est plus prononc que l'effet normal (g > f). L'effet zone tampon est moins prononc que l'effet normal (g < f). L'effet zone tampon a la mme importance que l'effet normal (f = g).

Le troisime cas est le plus simple comprendre. Si f = g, nous obtenons tout simplement que . Donc ici, rien de spcial. En revanche, si l'on se trouve dans le premier cas de figure, alors , car g > f, et B est habituellement galement plus grand que 1. L, on augmente la probabilit que le tueur se trouve dans la zone tampon en multipliant notre fraction par , qui, je le rappelle, est suprieur 1. Inversement, si g < f, alors on obtient que trouve dans la zone tampon. Si vous avez de la peine comprendre, ce n'est pas trs grave. V ous aurez la possibilit de tester diffrentes valeurs dans votre programme par vous-mmes. . Donc cette fois, on rduit la probabilit que le tueur se

V oil, je crois que nous avons fait le tour de la formule ! Bravo vous, si vous avez russi tout suivre jusqu'ici. V oici un rsum reprenant tout ce vers quoi nous nous sommes penchs : la formule s'applique un seul carr de la carte la fois ; on additionne pour chaque crime une valeur calcule ; si l'on se trouve dans la zone tampon, alors on a l'effet plus je m'loigne du lieu du crime, plus la probabilit augmente ; si l'on se trouve hors de la zone tampon, on a l'effet normal qui est plus je m'loigne du lieu du crime, plus la probabilit diminue ; ensuite, on peut accentuer l'un ou l'autre effet, ou mme les inverser, en modifiant les valeurs de f et de g ;

www.siteduzero.com

Profilage gographique

13/23

finalement, on pondrera les diffrentes valeurs que l'on trouvera entre elles et on dfinira quelles sont les zones les plus probables (pour la rsidence du tueur), par rapport celles qui le sont moins.

Le Programme
Bon, je crois que nous avons bien dcortiqu cette formule. Mais si maintenant nous l'appliquions tous les pixels d'une carte un un, la formule nous retournerait simplement des valeurs et nous obtiendrions quelque chose de ce genre : (1;1) 0.3600 (1;2) 0.1234 (1;3) 0.0032 (1;4) 0.0154 (1;5) 0.2432 (1;6) 0.3212 (1;7) 0.5423 (1;8) 0.0554 (1;9) 0.1235 (1;10) 0.1212 C'est bien joli, mais c'est tout sauf comprhensible pour un tre humain. Pour donner du sens aux valeurs retournes par notre formule, nous allons donc faire appel notre ami l'ordinateur.

Un problme de taille
Le principe est tout bte. Nous allons assigner une couleur chaque valeur retourne par la formule. Cela nous permettra de visualiser les zones de probabilits sur une carte. Mais nous rencontrons deux problmes. Je vous ai dit que les rsultats que nous renvoie le formulaire dpendent des constantes. Selon celles-ci, on peut donc se retrouver avec des rsultats allant de 0.003223 0.78992, ou de 8.21 89.123. V ous avez certainement remarqu que l'interprtation en faire ne coule pas de source. En effet, on ne peut se figurer quelles sont les probabilits maximum et minimum que la fonction nous retournera, ni comment afficher cela sur une carte. C'est pourquoi il faut absolument connatre les deux valeurs extrmes (le maximum et le minimum). Par exemple, le minimum peut tre 0.003223 et le maximum 0.78992. Une fois que l'on connat ces extrmes, nous allons pouvoir normaliser ce rsultat . Cela signifie simplement que l'on va transformer ces valeurs en des rsultats compris entre 0 et 100 (comme je vous l'avais expliqu au dbut). Dans notre cas, 0.78992 quivaut 100 et 0.003223 quivaut 0. Tous les autres rsultats seront donc compris entre 0 et 100. Et comment on normalise ?

Eh bien, considrez d'abord que soit la probabilit minimum que notre formule renvoie et notre probabilit maximum. Pour transformer ensuite chacune des probabilits, que j'appelle , en des nombres compris entre 0 et 100, nous allons commencer par soustraire chacun de nos . Ainsi, la valeur minimum sera 0. Maintenant, nous souhaitons que soit gal 100. doit valoir (notre p normalis). C'est une bte rgle de trois. Finalement, nous obtenons ce rsultat :

Ainsi, avec ce p normalis, nous pouvons tablir que quels que soient les rsultats de la formule, ils seront compris entre 0 et 100. Le coloriage de nos pixels en sera facilit. Tu as dit qu'il y avait deux problmes, non ?

Oui. Le premier problme tant rsolu, nous nous trouvons de nouveau face un autre obstacle. En effet, pour pouvoir trouver et , nous devons obligatoirement passer en revue tous nos pixels avant de pouvoir les afficher. Il existe en fait deux solutions ce problme. La premire consiste parcourir nos pixels une premire fois, calculer la probabilit pour chaque pixel, et rcuprer

www.siteduzero.com

Profilage gographique

14/23

uniquement et . La difficult sera qu'ensuite, lorsque nous afficherons nos pixels, nous allons nous trouver forcs de calculer une seconde fois la probabilit avec la formule. Cela augmenterait ds lors le temps de calcul de notre programme. La deuxime solution, vidente, serait que la premire fois que nous parcourrons notre carte, nous enregistrions les valeurs dans un tableau. De cette faon, il nous suffirait ensuite de rcuprer ces valeurs lors de l'affichage. L'avantage ici, c'est que nous gagnerions en temps de calcul. Nanmoins, nous perdrions en mmoire. En effet, imaginez que votre carte fasse 1000x1000 pixels. Nous aurions besoin d'un tableau un million d'entres pour stocker ces valeurs !
C'est maintenant que vous devriez dire : Ah, je viens de comprendre le jeu de mots avec le titre, "Un problme de taille" ! Trop drle !

C'est vous de voir quelle solution vous prfrez. Personnellement, j'ai choisi la premire, parce que son codage est plus rapide. Mais je vous encourage tester la seconde solution galement.

Place la programmation
Normalement, avec tout ce que nous avons parcouru, vous ne devriez pas prouver de difficults pour raliser ce programme, quels que soient le langage et la bibliothque graphique utiliss. Je vais nanmoins essayer de vous expliquer comment faire. Pour les exemples, j'utiliserai le langage C et la bibliothque graphique SDL. V ous trouverez un bon tuto sur ce langage et cette bibliothque graphique ici. Je vais vous guider dans la ralisation de ce programme, en restant au niveau des bases. Cela veut dire que le programme ne sera pas du tout interactif. C'est vous qui devrez indiquer les diffrentes valeurs (constantes ou coordonnes des crimes) dans le code avant de compiler. Si vous voulez faire en sorte que l'utilisateur insre ces donnes lui-mme, je vous laisse le soin d'amliorer le code. Ici, nous nous concentrerons sur le domaine de la formule et sur l'affichage du profilage gographique.

Je vais partir de maintenant partir du principe que vous savez tous programmer dans un langage ou un autre et que vous savez utiliser une bibliothque graphique. Nous allons procder en deux tapes. Premirement, nous allons calculer les probabilits maximum et minimum que nous renvoie notre formule. Deuximement, nous allons recalculer les probabilits, les normaliser, puis afficher les pixels un un en traduisant les probabilits normalises en couleurs (par exemple, 100 correspondra la couleur rouge, et 0 la couleur grise). V oici pour rappel la formule :

Je vous ai dit que cette formule doit s'appliquer sur chaque pixel d'une carte, carte que l'on peut reprsenter comme un quadrillage de pixels en deux dimensions. Donc, pour parcourir notre quadrillage, il suffit de faire deux boucles l'une dans l'autre. Une astuce utile est de sparer la formule en deux termes en remplaant dans chaque cas notre par 0 ou 1. De cette manire, on peut oublier le dans la formule et on vite de calculer des termes inutiles. V oici donc ce que nous allons obtenir pour la premire partie du programme. Code : C #include <stdlib.h> #include <stdio.h> #include <math.h> //Taille de notre image en pixels #define LONGUEUR 500 #define HAUTEUR 500

www.siteduzero.com

Profilage gographique
#define NB_CRIMES 3 int main(int argc, char *argv[]) { int i, j, n; double B, g, f, terme1, terme2, resultat; /*On initialise ici les coordonnes des crimes Je vous laisse vous dbrouiller pour permettre l'utilisateur de les entrer lui-mme =D */ int crime_x[3] = {200, 140, 348}, crime_y[3] = {200, 125, 210}; //Ici, ces variables vont nous permettre de connatre //les probabilits maximum et minimum double biggest_p, smallest_p; //Initialisation des constantes, avec des valeurs //qui fonctionnent bien, mais que vous pouvez changer // votre guise =) B=70; f=0.03; g=0.1; for (i=0 ; i<LONGUEUR ; i++) { for (j = 0 ; j < HAUTEUR ; j++) { resultat=0; //L, on applique simplement la formule pour chaque crime //Et on stocke le rsultat dans la variable resultat //Notez la condition qui nous vite d'utiliser la variable

15/23

phi

for (n= 0 ; n < NB_CRIMES; n++) { if((fabs(i - crime_x[n])+fabs(j-crime_y[n]) > B)) { terme1 = 1 / pow((fabs(i crime_x[n])+fabs(j-crime_y[n])),f); resultat+= terme1; } else { terme2=(pow(B,(g-f)))/pow((2*B-fabs(i-crime_x[n])-fabs(j-crime_y[n])),g); resultat+= terme2; } } //On stocke les valeurs les plus leves //et les plus faibles ici if(i==0 && j==0) { biggest_p = resultat; smallest_p = resultat; } if(resultat > biggest_p) biggest_p = resultat; if(smallest_p > resultat) smallest_p = resultat; } }

return EXIT_SUCCESS;

www.siteduzero.com

Profilage gographique

16/23

Bon, normalement, rien ne devrait tre difficile comprendre dans cette premire partie. On applique btement la formule. C'est cela qui est pratique avec les mathmatiques : on peut facilement les retranscrire dans un langage tel que le C. En effet, la somme est simplement traduite ici par une boucle. Et la condition qui dit que doit tre gal 0 ou 1, selon si l'on se trouve dans la zone tampon ou non, est une simple condition if-else. Pour la deuxime partie du programme, voici ce que nous allons raliser. Nous allons d'abord allouer autant de rectangles de 1 pixel sur 1 pixel que ncessaire. Pour ce faire, je propose d'utiliser un tableau deux dimensions, qui reprsentera notre carte, et qui n'est rien d'autre qu'un tableau deux dimensions de pixels. Ensuite, nous mettrons une image de fond, qui sera la carte d'une ville. Personnellement, j'ai pris une carte de Manhattan (en noir et blanc de prfrence, pour ne pas confondre avec les zones de probabilit). Aprs avoir initialis le tout, nous allons utiliser le code ci-dessus pour calculer et . Ensuite, nous passerons nouveau par deux boucles, mais cette fois pour parcourir notre tableau de pixels (des rectangles de taille 1x1). Pour chaque pixel, nous entreprendrons un nouveau calcul de probabilit, nous la normaliserons et nous la retranscrirons en couleur. Petite parenthse : je vous ai dit lorsque nous observions comment normaliser nos probabilits que l'on voulait un maximum 100 et un minimum 0. Ce qui est tout autant possible, afin de ne pas se compliquer la vie avec les couleurs, c'est de mettre le maximum 255. En effet, nous n'aurons plus qu' mettre notre probabilit normalise directement dans la couleur et l'afficher. Personnellement, j'ai choisi d'aller du rouge au jaune, le rouge tant la probabilit maximum :

Couleurs Ainsi, quand nous devrons faire le choix de la couleur de notre pixel, nous pourrons simplement faire : Code : C SDL_FillRect(points[i][j], NULL, SDL_MapRGB(ecran->format, 255, 255-probabilite,0));

J'ai mis (255-probabilite) car on veut que le jaune soit la probabilit minimum et le rouge la probabilit maximum.

N'oubliez pas non plus de rendre vos pixels transparents, sinon, vous ne verrez pas la carte. Finalement, au moment o vous normaliserez votre probabilit, il faudra arrondir vos valeurs. Le systme RGB est compos uniquement de nombres entiers compris entre 0 et 255. V oil, vous avez tout en main pour coder un joli programme. Pour ceux qui auraient des difficults, voici le code complet, avec les commentaires seulement sur la partie Affichage du programme. Pour le reste, j'ai utilis la mme mthodologie que dans le tutoriel officiel, dans la partie SDL.

Secret (cliquez pour afficher) Code : C #include #include #include #include <stdlib.h> <stdio.h> <math.h> <SDL/SDL.h>

#define LONGUEUR 600 #define HAUTEUR 600 #define NB_CRIMES 3

www.siteduzero.com

Profilage gographique
//J'utilise la mme fonction que dans le tutoriel officiel void pause() { int continuer = 1; SDL_Event event; while (continuer) { SDL_WaitEvent(&event); switch(event.type) { case SDL_QUIT: continuer = 0; } }

17/23

int main(int argc, char *argv[]) { SDL_Surface *ecran = NULL, *points[LONGUEUR][HAUTEUR] = {NULL}; SDL_Surface *map = NULL; SDL_Rect position, positionMap; int i, j, n; double B, g, f, terme1, terme2, resultat, probabilite; int crime_x[3] = {200, 140, 348}, crime_y[3] = {200, 125, 210}; double biggest_p=0, smallest_p=100; B=70; f=0.03; g=0.1; positionMap.x = 0; positionMap.y = 0; SDL_Init(SDL_INIT_VIDEO); map = SDL_LoadBMP("manhattan_map.bmp"); ecran = SDL_SetVideoMode(LONGUEUR, HAUTEUR, 32, SDL_HWSURFACE); for (i = 0 ; i < LONGUEUR ; i++) for (j = 0 ; j < HAUTEUR ; j++) points[i][j] = SDL_CreateRGBSurface(SDL_HWSURFACE,1,1,32,0,0,0,0); SDL_WM_SetCaption("Profilage geographique", NULL); SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0)); //Pensez afficher la carte d'abord. Nous afficherons les pixels ensuite par-dessus SDL_BlitSurface(map, NULL, ecran, &positionMap); for (i=0 ; i<LONGUEUR ; i++) { for (j = 0 ; j < HAUTEUR ; j++) { resultat=0; for (n= 0 ; n < NB_CRIMES; n++) { if((fabs(i - crime_x[n])+fabs(j-crime_y[n]) > B)) { terme1 = 1 / pow((fabs(i crime_x[n])+fabs(j-crime_y[n])),f);

www.siteduzero.com

Profilage gographique
} else { resultat+= terme1;

18/23

terme2=(pow(B,(g-f)))/pow((2*B-fabs(i-crime_x[n])-fabs(j-crime_y[n])),g); resultat+= terme2; } } if(resultat > biggest_p) biggest_p = resultat; if(smallest_p > resultat) smallest_p = resultat; } -// }

//--------------Affichage -----------------------------------------for (i = 0 ; i < LONGUEUR ; i++) { for (j = 0 ; j < HAUTEUR ; j++) { //On calcule la position de chaque pixel //Rien de particulier ici position.x = i; position.y = j; //Ici, on recalcule notre probabilit resultat = 0;

for (n= 0 ; n < 1; n++) { if((fabs(i - crime_x[n])+fabs(j-crime_y[n]) > B)) { terme1 = 1 / pow((fabs(i crime_x[n])+fabs(j-crime_y[n])),f); resultat+= terme1; } else { terme2=(pow(B,(g-f)))/pow((2*B-fabs(i-crime_x[n])-fabs(j-crime_y[n])),g); resultat+= terme2; } } //Ici on normalise, en faisant attention que le maximum soit 255 et non pas 100 ! //Il faut aussi penser arrondir notre rsultat probabilite = ceil(((resultat-smallest_p)*255)/( biggest_p-smallest_p)); //Il ne reste plus qu' afficher notre pixel SDL_FillRect(points[i][j], NULL, SDL_MapRGB(ecran->format, 255, 255-probabilite,0)); //Sans oublier de le rendre transparent, pour voir la carte ! SDL_SetAlpha(points[i][j], SDL_SRCALPHA, 220); SDL_BlitSurface(points[i][j], NULL, ecran, &position); } }

//--------------------------------------------------// SDL_Flip(ecran);

www.siteduzero.com

Profilage gographique
//La fonction pause est la mme que dans le tutoriel officiel pause(); for (i = 0 ; i < LONGUEUR ; i++) for (j = 0 ; j < HAUTEUR ; j++) SDL_FreeSurface(points[i][j]); SDL_FreeSurface(map); SDL_Quit(); } return EXIT_SUCCESS;

19/23

Le moment de vrit a sonn. Est-ce que tout ce dont nous avons fait la dcouverte fonctionne vraiment ? Est-ce que les mathmatiques marchent ? Quoi, vous avez dout ? ceci : Bien sr que oui. Tout fonctionne bien. Un rapide test avec un seul crime d'abord et l'on obtient

Profil gographique Nous retrouvons donc bien notre carr, avec la zone tampon au milieu en jaune trs clair, et autour, la zone rouge qui affiche les probabilits les plus leves. Bien entendu, l o a devient intressant, c'est lorsque l'on fait le test avec plusieurs crimes. V oici ce que j'obtiens avec le code ci-dessus :

www.siteduzero.com

Profilage gographique

20/23

Profil gographique

Je vous conseille vivement de tester votre programme avec diffrentes valeurs pour les constantes, pour bien discerner combien elles influent sur le profil gographique. Testez aussi avec plusieurs crimes sur la mme carte. La manire dont ils s'influencent mutuellement est assez intressante observer. Sachez d'ailleurs que la grosse difficult de Rigel est de trouver les bonnes constantes. Rossmo lui-mme donne des cours travers le monde, pour aider les forces de l'ordre utiliser son programme et mettre les bonnes valeurs aux constantes en fonction du profil du tueur. Personnellement, j'ai remarqu que f et g fonctionnent assez bien avec des valeurs entre 0 et 1. Pour B, ce n'est pas trop difficile, sa valeur reprsente simplement le rayon en pixels autour du crime, dans lequel on a l'effet de zone tampon.

Aller plus loin


Bien entendu, le programme ci-dessus est loin d'tre parfait. V oici quelques suggestions pour amliorer tout a. Il serait pratique que l'utilisateur puisse entrer lui-mme les valeurs des constantes, dans la console par exemple. Un autre moyen de faire interagir l'utilisateur serait de lui permettre d'indiquer le lieu du crime par un clic sur la carte. Et, pourquoi pas, d'afficher une petite image qui indiquerait le lieu de chaque crime ? V ous pourriez amliorer la formule de Rossmo en choisissant des constantes diffrentes pour chaque crime. En effet, jusque-l, on considrait que chaque crime avait la mme importance, mais ce n'est pas obligatoirement le cas. V ous pouvez galement amliorer l'esthtique du programme en modifiant les couleurs. Par exemple, au lieu de normaliser entre 0 et 255, faites-le entre 0 et 100, et dcomposez vos probabilits avec des conditions. V ous aurez ainsi plus de libert sur les couleurs. V oici ci-dessous un exemple de ce que j'ai russi obtenir, mais bon, c'est facilement amliorable !

www.siteduzero.com

Profilage gographique

21/23

Certains d'entre vous ne sont peut-tre pas pris des distances de Manhattan et prfreraient avoir de jolis cercles plutt que des losanges, mme si ce serait moins proche de la ralit. Pour cela, il n'y a aucun souci. D'ailleurs, si vous avez bien suivi le tutoriel, vous ne devriez pas rencontrer de problme pour rcrire la formule avec les distances euclidiennes. Pour ne pas laisser tomber ceux qui auraient des difficults, voici comment il fallait faire : Secret (cliquez pour afficher)

Bien entendu, vous pouvez trouver d'autres amliorations possibles ce programme. V ous savez normalement tout ce qu'il faut sur le profilage gographique. Qui sait, peut-tre pourriez-vous mme essayer de concurrencer le programme Rigel de Rossmo. Une fois de plus, on voit bien que la force brute ne vaut rien face aux mathmatiques ! Il n'est videmment pas difficile de s'apercevoir que ce systme contient plusieurs dfauts. Le premier est que, pour qu'il fonctionne convenablement, il faut que le tueur ait commis suffisamment de crimes (ce qui n'est pas trs pratique, vous l'admettrez ). Deuximement, le programme se base sur le fait que le tueur va svir de manire uniforme, en essayant de paratre alatoire. Si donc un jour un tueur assez intelligent se mettait agir de manire vraiment alatoire, le programme risquerait d'avoir des problmes pour le reprer. Vous savez maintenant ce qu'il vous reste faire. Nanmoins, cette formule a largement fait ses preuves aux cts de la police et sachez que de nombreux serial killers ont t arrts de cette manire. J'espre que ce tutoriel vous a plu et qu'il vous a permis d'approfondir vos connaissances dans le domaine du profilage gographique. En ce qui vous concerne, n'hsitez pas faire partager vos propres programmes de profilage gographique avec des fonctionnalits plus avances que celles prsentes ici. Et n'oubliez pas, si vous avez besoin d'aide pour coder votre programme, le forum est l pour a. Si vous voulez aller plus loin dans le sujet de l'alatoire et des probabilits, je vous invite galement aller lire ce tutoriel : la dcouverte de l'alatoire et des probabilits.

Partager
www.siteduzero.com

Profilage gographique

22/23

Ce tutoriel a t corrig par les zCorrecteurs.

www.siteduzero.com

Vous aimerez peut-être aussi