Sébastien Verel
vereli3s.unie.fr
www.i3s.unie.fr/
∼
verelÉquipeSoBi-UniversitédeNieSophia-Antipolis
19 janvier 2009
Bonjour!
Maîtrede onférenesdepuis septembre2006.
Reherhe :Coneption etétude d'algorithmesd'optimisation
inspirésde labiologie, ...
Algorithmes:voirplusloin
optimisation:trouverlesmeilleuressolutionspossibles àun
problème(transport,emploidutemps,design,réglagede
prothèses,oneptiondethéorieongnitive,...)
bio-inspiré:extrairelesprinipes atifsdesystèmebiologique:
théoriedel'évolution,fouragementdesfourmis, déplaement
d'oiseaux,....
oneption:réerettesterdenouveaux algorithmes
étude:omprendreetprédirepourquoielamarhe,oumieux,
pourquoiçarate!
Au laboratoireI3S(université/CNRS) àSophia-Antipolis:
vous pouvezvenir (bus 1euro), 'estouvert!
Bonjour!
Enseignement :
vous,
Créationsiteweb,L2MASS
prog. web,L3info;introSyst. omplexes,L2/L3info;syst.
art.omplexes,M1info;info.bio-insp.M2info
responsabledel'enseignementMIAGEàdistane
Contat:pour toute quionerne l'enseignement
(orretions,absenes, demande d'expliation,ompléments,
orientation, ...)
vereli3s.unie.fr
www.i3s.unie.fr/
∼
verel :page web de l'enseignement bureau petitValrose426tel.04.94.92.07.69.83
Bonjour!
Motivationpouret enseignement:
enseignerlesbasesdelarésolutiondeertainsproblèmespar
méthodealgorithmique
enseignerlasieneinformatiqueentantquelangueapable
d'exprimerletraitementd'information
enseigneràdesétudiantsdontle oeurde l'enseignementn'est
passeulementl'informatique
Information sur l'enseignement
but, objetifs,et.
f :www.i3s.unie.fr/
∼
verelObjetifs de la séane 1
1
Connaîtredesalgorithmeshistoriques
2
Connaîtreune dénitiond'algorithme
3
Connaitrel'environnement Proessing
4
Editeret ommenter unode java aveproessing
5
Savoiraher untexte
6
Savoiraher desformesgraphiques simples
Question prinipaledujour :
Qu'est-e qu'unalgorithme?
Plan
1
Exemples d'algorithmesde l'histoireet duquotidien
2
Une trèsourte histoirede l'algorithmique
3
Une ourtehistoire de l'informatiqueet desordinateurs
4
Dénitions d'Algorithme
5
Le langage Java
Algorithme d'Eulide (éléments, VII, -325/-265 av. JC)
Problème
Trouver uneunité de mesure ommune pourdeux longueursde
segments i.e. trouverle pgddeux nombres entiers.
Algorithme PGCD(a
,
b :entier) : :entierdébut
sib
=
0 alorsPGCD =a
sinon
←
restede la divisionde aparbPGCD =PGCD(b,)
nsi
n
Exéution de l'algorithme PGCD(72, 34)
Pour a
=
72et b=
341. PGCD(72, 34)
4. b
6 =
07.
=
48. PGCD(34, 4)
4. b
6 =
07.
=
28. PGCD(4, 2)
4. b
6 =
07.
=
08. PGCD(2, 0)
4. b
=
05. PGCD =2
Crible d'Erastothène (III avant J.-C.)
Problème
Déterminerles nombres premiersinférieur àunebornesupérieure.
Algorithme Erastothene(N:entier): :tableaud'entiers
début
Eriresousformede tableaulesnombres entiers
omprisentre 2etN.
tantque arrédupluspetitnombrenonrayéet
nonmarquéestpluspetitqueN faire
Marquerle pluspetitnombredutableaunonrayéetnonmarqué
Rayerdutableautouslesmultiplesdeenombre
n tantque
nombrepremiersinférieurs àN :nombresmarquésounonrayés
n
Crible d'Erastothène (III avant J.-C.)
Remarques
Possibilitéd'améliorationde l'algorithme:
−→
ne pas érireles multiplesde 2et lesmultiplesde 5.Avantage :
plusrapide àérireau débutpareque
moinsde plae utilisésurunefeuille
Inonvénient :
pluslong àrayer:ilfautrééhirpluslongtempspourrayerles
nombres adéquates!
Version modernede l'algorithme:
Crible d'Atkin(1999)
Référene :A.O.L. Atkin,D.J. Bernstein,Prime sievesusingbinary
quadrati forms,Math.Comp. 73 (1999),1023-1030.
Multipliation égyptienne
Problème
Caluler le produitde 2 entiers
Algorithme MultipliationEgyptienne(a
,
b:entier): :entierdébut
Erirelatabledespuissanesde2inférieuresouégalesaunombrea
Erirelatabledesdoublesdu nombreb
tantque lenombrean'estpasnulfaire
Coherlaplusgrandepuissanede2
≤
aSoutraireettepuissanede 2dunombrea
n tantque
additionnerlesdoublesdunombreborrespondauxpuissanesde2
ohéspréédemment
produitde aparb :sommealuléei-dessus
n
Tour de magie!
Choisissezunnombreentre 1et 15.
Tour de magie!
9 14 10
15 8 13
12 11
Tour de magie!
15 3 11
13 9 5
7 1
Tour de magie!
6 14 13
12 4 5
15 7
Tour de magie!
2 3 6
7 10 11
14 15
Reherhe d'un mot dans un ditionnaire
Itérativement
Algorithme reherheIter(ible :mot) : liste de mots
début
Lirepremier motdu ditionnaire
tant quemotlu n'estpas le motiblefaire
Lirelemot suivant
ntant que
listede mots :dénitiondumotlu
n
On trouve le motorretmaisl'algorihmen'est pastrès eae...
en moyenne, N/2mots lusave Nlatailleduditionnnaire
Il faututiliser l'ordrelexiographiqueduditionnaire
et laméthode dihotomique(diviserpourrégner)
Reherhe d'un mot dans un ditionnaire
pardihotomie
Algorithme reherheDiho(ible:mot): listedemots
début
premier
←
premiermotduditionnaire dernier←
derniermotduditionnaire Lirelemotmédianentrepremieretderniertant quemotlun'estpaslemotiblefaire
simotibleestavantlemotlualors
dernier
←
motlusinon
premier
←
motlunsi
Lirelemotmédianentrepremieretdernier
ntantque
listedemots:dénitiondumotlu
n
en moyenne, log
2
(
N)
mots lusave N latailledu ditionnnaireIndie de masse orporelle
Problème
Donner undegré de orpulene basésurl'indie demasseorporelle
Algorithme degreMasseCorporelle(T:nombreréel,m:nombreréel):
début
i
←
m/
T2sii
<
20alorserire("poidsinférieuràlanormale")
sinon
si i
<
25alorserire("poidsnormal")
sinon
si i
<
30 alorserire("surhargepondérale")
sinon
si i
<
40 alorserire("adiposité")
sinon
erire("obésité"")
nsi
nsi
nsi
nsi
n
Bouilloire
Problème
Conevoir une bouilloire pour fairebouillirde l'eau
jesupposequ'une bouilloire(életrique) peut :
onnaitre latempératurede l'eauT
onnaitre etmodierlapositionde soninterrupteur
hauer
Algorithme bouilloire():
début
tantque lapriseestbranhéefaire
tantque interrupteurestON et T
<
100faireChauer
ntantque
positionnerinterruptionsurOFF
n tantque
n
Reettes de uisine
Problème
Convevoir un (bon)gâteau
Ingrédients (pour6
personnes):
- 1pâtebrisée
- 150gdesure
- 100gdebeurrefondu
- 3oeufs
- lejusdedeuxitrons
Préparation:
. Préhauerlefourà200C.
. Abaisserlapâtebrisée.
. Battrelesoeufsavelesureenpoudre
jusqu'àl'obtentiond'unmélange
mousseux.
. Ajouterlejusdeitron.
. Ajouterlebeurrefondu.
. Enfourneretlaisseruireenviron30mn.
. Lapréparationdoitdorer.
Vos algorithmes quotidiens
En onnaissez-vousd'autres?
Vieille histoire
Desriptionsexhaustives d'algorithmes:
dèsl'époquedesBabyloniens (de -2000av JCà-300 avJC),
Pour desalulsonernantle ommereet les impts.
Al-Khwarizmi (né vers 780 - mort vers 850)
algorithme:vientdunom dumathématiien perseduIXièmesièle
Abu DjafarMuhammad ibnMusaal-Khwarizmi
motalgorisme:àl'origine uniquementaux règles
d'arithmétiqueutilisant leshires indo-arabesnumérals
Tradution en latineuropéendunom Al-Khwarizmi's en
algorithme au XVIIIièmesièle.
Evolutionpour inluretoutes lesproédures déniespour
résoudreunproblème ou aomplirunetâhe.
Quelques dates jusqu'en 1946
prinipalesoure:http://histoire.info.online.fr/prehistoire.html
-3000 :Période de l'empereurChinois Fou-Hi dontle symbole
magique, l'otogoneàtrigrammeontient les8 premiers
nombres représentés sousformebinairepardestraits
interrompus ou non:000 001 010011 et...
-500 :Apparitionau Moyen Orientdupremier"outil" de
alul :l'abaqueet le boulier.
1580 :John NAPIER inventeles logarithmes.
1623 :WilhelmShikard inventee qu'ilappelle unehorloge
alulante. Ellealulaitméaniquement gràeàdes roues
dentées et pouvaitréaliseradditions, soustrations,
multipliationsetmémorisationdesrésultats intermédiaires.La
mahinea rapidementsombré dansl'oubliarsoninventeur
habitaiten Allemagne duSuddansune régionravagée par la
guerre de 30ans.
Quelques dates
1632 :L'Anglais Oughtredinvente laRègleàalul.
1642 :Pasalmet aupoint,pouraider sonpèreolleteurdes
imptsà Rouen,laPasaline quipouvaittraiter lesadditions
et lessoustrations.
1679 :Leibnitz déouvre etmet aupoint unearithmétique
binaire (etanalyseles otogrammesde Fou-Hi).Il invente
aussien 1694 unemahineà alulerdérivéede laPasaline
maisapable de traiterles multipliationsetdivisions.
Quelques dates
1833 :Babbage :mahineàdiérenespuis unemahine
analytique quiontientlesonepts dee que seral'ordinateur
moderne:unitéde alul,mémoire, registreetentrée des
donnéespararteperforée.
1836 - 1838 :Les AnglaisEdwardDavy,WilliamLooke et
Charles Wheastone vontinventeret mettreaupoint le
télégraphe.Le peintreAmériainSamuel Morse inventeleode
quiportesonnom
1840 :Collaboratriede Babbage,AdaLovelae,
mathématiienne, dénit leprinipedes itérationssuessives
dansl'exéution d'uneopération.
Créatriedumot algorithme.
Quelques dates
1876 :L'AmériainGraham Bellinvente letéléphone et fonde
laompagnie BellTelephone Company.
1884 :HermanHollerith réeune tabulatrieà artesperforées
(inspirée desmétiersàtisser de Jaquard) pourréaliserle
reensement Amériainde 1890.
premièremahineàtraiterl'information.
1924 :Larme réeparHerman Hollerithen 1896, Tabulating
Mahine Corporation, est renommée en InternationalBusiness
Mahine ouIBM.
1935 :IBMommerialisel'IBM601, unalulateurà relais
utilisant desartes perforées apable de réaliserune
multipliationen uneseonde.
Il en seravendu 1500 exemplairesessentiellementpourles
marhés sientiqueset omptables.
Quelques dates
1937 :AlanTuring publieundoumentsur les nombres
alulables. Il résolvaitdesproblèmesmathématiquesen
utilisant unesorted'ordinateur logiquetrèssimpleappelé
depuis Mahinede Turing.
1938 :Thèse de Shannonquile premier faitle parallèleentre
les iruits életriquesetl'algèbreBooléenne. dénitiondu
hirebinaire :bit(BInary digiT).
1938 :Création duVersuhmodell 1 ou Z1parKonrad Zuse.
Il lemet aupoint danslesalon de sesparents àBerlin! Il
s'agitd'un ordinateurbinaireprogrammable maisméanique.
Il ne fontionnajamais vraimentorretement.
Quelques dates
1939 :KonradZuse etunde sesamisHelmut Shreyer:
deuxième ordinateur, leZ2
remplaement partiedespièesméaniques duZ1 par relais
életroméaniquesde téléphone rahetés d'oasion.
1940 :Pourdérypter lesmessages de l'armée Allemande,les
Anglais mettentau pointsur lesite de BlethleyParkles
alulateurs Robinsonet Colossussousladiretiondu
mathématiien AlanTuring.
1941 :Créationdualulateur binaireABCparJohn Atanaso
et CliordBerry. Lamahineutilisedeslampesetomporte
une mémoireetdesiruits logiques.
mémoire:60 motsde 50 bits,fréquene60 Hz,1 addition/s.
Premiervraiordinateur? (programmen'est pas en mémoire)
Quelques dates
1941 :KonradZuse, mobilisédansles usinesd'aviation
Henshel :Z3 (programme enregistré).
premier véritableordinateur.
2600 relais, onsolepourl'opérateuretd'un leteur de bandes
ontenant les instrutionsàexéuter. stokage :64 nombres
de 22 bits.
4 additionspar seondeet1 multipliationen 4 seondes.
1943 :Création duASCCMarkI(Automati
Sequene-Controlled CalulatorMarkI)àHarvard parHoward
Aiken et sonéquipe(ave lesoutien d'IBM).
3000 relais,800 km de ables
3 opérationssur 23hires parseonde.
Pas de sousprogramme,pas de branhement.
Quelques dates
1945 :Un inseteoiné dansles iruitsbloquele
fontionnementdu alulateurMarkI. Lamathématiienne
GraeMurray Hopperinvente lemotBUG...
1945 :John Von Neuman :desriptiond'ordinateur à
programme enregistré
EDVAC (EletroniDisrete VariableAutomati Computer).
1946 :Création de l'ENIAC (EletroniNumerial Integrator
and Computer)parP.EkertetJ. Mauhly.Laprogrammation
de e alulateur s'eetueen reablant entreeux, ses
diérents éléments.
19000tubes, 30tonnes, 72m2 etonsomme 140kilowatts.
Horloge :100KHz. Vitesse:environ330 multipliationspar
seonde.
Générations d'ordinateur
Déembre 1947 :Invention dutransistorparWilliamBradford
Shokley,Walter H.Brattain etJohn Bardeendansles
laboratoires de BellTelephone.
−→
Deuxièmegénération d'ordinateur1958 :Démonstrationdupremier iruitintégrérée parTexas
Instruments.
−→
troisièmegénération d'ordinateur1965 :Gordon Mooreéritque laomplexité desiruits
intégrésdoublera tousles ans :"Loide Moore".
1971 :l'ère dumiroproesseur(INTEL)
−→
QuatrièmegénérationDénition d'Ordinateur
En 1955, "ordinateur" :tradutionJ. Perretde "eletronidata
proessing mahine" ( mahineéletroniquede traitementdes
données ).
−→
e quebeauoups de languesnomme alulateur (omputer)Dénition Aadémiefrançaise de 1967
Une mahineautomatique quipermet d'eetuer,dans leadre de
programmesde struture pré-établis, desensemblesd'opérations
arithmétiquesetlogiques àdesns sientiques,administrativesou
omptables.
Dénition informatique
En 1962,PhilippeDreyfus employalemot informatique pour dénir
le traitementautomatique de l'information.
Maintenante mot est employé dansbeauoup de langues(hors
anglaise)
−→
Informatique:omposédes2 motsinformationet automatique.Dénition Aadémiefranaise de 1967 (oialisation)
Siene dutraitementrationnel,notamment àl'aidede mahines
automatiques, de l'information, onsidéréeomme le supportde
onnaissanes dansles domainessientique,éonomiqueet soial.
Retour sur les exemples
Quels sontlespointsommunsentre tousesalgorithmes?
algorithmed'Eulide
algorithmed'Erastothène
multipliationégyptienne
degré de masseorporelle
reette de uisine
Caratéristiques d'algorithme
Résolutiond'unproblème
algorithmed'Eulide :
Trouver uneunitéommuneà deuxlongueurs
algorithmed'Erastothène:
Trouver lesnombres premierspluspetitqueN
Multipliationégyptienne:
Caluler leproduit de deux nombres
degré de masseorporelle:
Donnerle degré de orpulene basésur l'IMC
reette de uisine:
Confetionnerle gâteaux de vosrêves
Caratéristiques d'algorithme
Résolutiondemanièreopératoire
algorithmed'Eulide :
Calulerle quotientde aparb
algorithmed'Erastothène:
rayer lesmultiplesde ...
Multipliationégyptienne:
a
←
E[
a/
2]
degré de masseorporelle:
Si i<25 alors...
reette de uisine:
Mélangerles oeufsave...
Caratéristiques d'algorithme
Enonédansunlangagepréis
Langage le plusformelle :sémantique opérationel, axiomatique,...
algorithmed'Eulide :
quotient
algorithmed'Erastothène:
rayer lesmultiplesde ...
Multipliationégyptienne:
a
←
E[
a/
2]
degré de masseorporelle:
Si i<25 alors...
reette de uisine:
Mélangerles oeufsave...
Caratéristiques d'algorithme
Données/informationsenentrée
algorithmed'Eulide :
les deux nombresa etb
algorithmed'Erastothène:
les nombres entiers
Multipliationégyptienne:
les deux opérandes
degré de masseorporelle:
le poidset lataille
reette de uisine:
Les ingrédients
Caratéristiques d'algorithme
Données/informationsensortie
algorithmed'Eulide :
le PGCD
algorithmed'Erastothène:
les nombres premiersplus petits queN
Multipliationégyptienne:
le produit desnombres
degré de masseorporelle:
unlassement
reette de uisine:
ungâteau au itron!
Caratéristiques d'algorithme
S'arrêteentempsni
algorithmed'Eulide :
au plusmax
(
a,
b)
?algorithmed'Erastothène:
au plus
√
NN?
Multipliationégyptienne:
au pluslog
(
a)
?degré de masseorporelle:
5 ou 6opérations
reette de uisine:
2h...
Tentatives de dénitions
dénition unpeu ourte
Un algorithmeénone unerésolutionsousla formed'unesérie
d'opérations àeetuer.
dénition (ditionnaireanadien)
Formuleou ensemble d'étapesqu'on appliquepourrésoudreun
problème en partiulier. Un algorithmedoit avoirunensemble de
règles sansambiguïté etunpoint limitebiendéni
Tentatives de dénitions
dénition (Wikipedia)
Un algorithmeest unmoyen pour unhumain de présenter la
résolutionparalul d'un problèmeàune autrepersonnephysique
(un autrehumain)ou virtuelle (un alulateur).Eneet, un
algorithmeest unénoné dansunlangage biendéni d'unesuite
d'opérations permettantde résoudreparalul unproblème.
dénition satisfaisante
Un algorithmeest unensemble nid'instrutionsorretement
dénis quiapourbut larésolutiond'unetâhe àpartird'un état
initialet seterminantsurun étatnalbiendéni.
Tentatives de dénitions, une dernière
Dénition ("omplexitéetalgorithmiqueavanée", IvanLavallé)
Un algorithmey est vuomme unesuiteniede régles àappliquer
dans unordre déterminéà unnombreni de donnnéespour arriver,
en unnombrenid'étapes,à unertainrésultat, etela
indépendammentdes données.
Vers une dénition formelle
−→
Il n'existepas unedénitionformelleadmise partous.Premières formalisations:
AlanTuring (1936):un algorithmeest e quiexéutable à
partird'unemahinede Turing.
Alonzo Churh (lambda alulus):tout alul est réalisableà
l'aided'un algorithmeexéuterparunordinateur(ave
susamment de tempsetd'espae)
AppliationSSSS
Cryptographie (paiementséurisé,téléphone portable,
onnetions internet,et)
Compressiond'images (dvd,mpeg4,et), de sons(mp3, et)
internet (moteur de reherhe,...)
gps(traerde route,...)
organisersontemps, sontravail
jeux
problèmesindustriels(oneptionautomatisé ou assister...)
lauisine faile!
résolutiond'équations (ommuniationsnumériques, ...)
intelligene artiielle(optimisation,apprentissage
automatique, ...)
Grands domaines d'appliations
Impts,l'administrationpubli, et.
Commere, lanane,l'administration privée,et.
Calulsientique
Loisirs:musique,vidéo, jeux, et.
Communiation :réseauxinternet,mobile,ommuniation
satellite,et.
Langages de programmation
Unalgorithmeest unénoné générale quipeut s'exprimer dansun
grandnombre de langages de programmation
Lorsqu'unalgorithme estexprimédansunertain langage
partiulier,
on ditque l'onimplémente
ou quel'onode unalgorithmedanse langage.
Classiation des langages de programmation
On distingue plusieurstype de langagede programmationselon
leurs propriétés :
langages impératifs:
fortran,basi,pasal, bash,C,maple,php, javasript
langage fontionnel :
lisp,sheme, aml
langage orientéobjets :
eiel, C++,java, php5
....
Les langages atuelstendent àombinertoutesles approhesde
programmation possible.
Langage Java et système Proessing
Langage Java :langage orienté Objet
Système Proessing :
simpliationdeJava,
interfaeentreutilisateuretjava,
Environnementde programmation
Système Proessing
Créé au MIT(Boston,USA) pourintroduireles onepts de
basede laprogrammation dansleontexte desartsvisuels
(artistes,Web).
Idée :immersionrapide dansles programmesgraphiques, l'Art
Numérique etlasimulation d'expérienes physiques!...
Environnement graphiquemis en avant
Installation, onguration
Un ours assezompletorienté"noninformatiien":
http://www.eole-art-aix.fr/rubrique81.html
Le ours 02onernent l'installation
Ahage de texte
Sans retouràlaligne :
print("super genial megaool");
Averetouràlaligne:
println("yes we an !");
Attention! lesinstrutions seterminent par unpointvirgule;
Erire un ommentaire
Les ommentaires sontdeslignesnoninterprétées par
l'ordinateur
Importaneapitale pourlalisibilitéde votre programme
Importaneapitale pourommuniquer ommentfontionne
votre programme
Je Veuxet j'Exigedes ommentaires!
// dessin du tableau
// fin du programme
Graphisme : ouleur de fond
bakground(r, v, b) ;
où r, v etb sontdesentiers entre 0et 255donnant le niveaude
rouge, vertet bleu.
Graphisme : Dimension de la fenêtre
pixel(piture element):petitretangleélémentaire assimiléà
un"point"
unéran 1024x768 :signiequ'il y a1024 pixelsen largeuret
768 pixelsen hauteur
Réglage de lataillede lafenêtre graphique:
size(largeur, hauteur) ;
Graphisme en vra
point(x, y) ;
line(x1, y1, x2, y2) ;
ret(x, y, largeur, hauteur) ;
ellipse(x, y, largeur, hauteur) ;
Objetifs de la séane 1
1
Connaîtredesalgorithmeshistoriques
2
Connaîtreune dénitiond'algorithme
3
Connaitrel'environnement Proessing
4
Editeret ommenter unode java aveproessing
5
Savoiraher untexte
6
Savoiraher desformesgraphiques simples
Question prinipaledujour :
Qu'est-e qu'unalgorithme?
Travail pour la semaine prohaine
Combien d'étagèressontonsarées àlaprogrammationen
JAVA àlaBU?
Choisirunlivrequivous sembleen rapportaveet
enseignement
Trouver aumoinsunsite web en rapportave l'enseignement
Installer Proessing sur votreordinateursi vousen avez un