Académique Documents
Professionnel Documents
Culture Documents
Intelligence Artificielle
Filière d’ingénieur
Systèmes Intelligents, Communicants et Mobiles
(SICoM)
AU : 2020/2021
Département de Génie Electrique, Faculté des Sciences et Techniques Fès B.P. 2202, Route d’Imouzzer FES
212 (35) 60 80 14 – 212 (35) 60 96 35 7 212 (35) 60 82 14
Email: alamiaicha3@yahoo.fr URL: www .fst-usmba.ac.ma
I. Algorithmes de recherche
1. Arbre en Python:
1
arbre
=
[’A’,
[
2
[’B’,
[
3
[’E’,
[
]
],
4
[’F’,
[
]
]
5
]
6
]
,
#
fin
de
B
7
[’C’,
[
]
],
#
fin
de
C
8
[’D’,
[
9
[’G’,[
]
]
10
]
C.-à-d. que: 11
]
#
fin
de
D
§ chaque sous-arbre sera sous forme d’une liste : 12
]
[ sommet , [ liste sous arbre ] ] 13
]
§ une feuille est notée sous la forme :
[ feuille , [ ] ]
Une fois cette notation adoptée, les algorithmes de parcours s’écrivent très simplement :
2. Graphe en Python:
Une fois cette notation adoptée, les algorithmes de parcours s’écrivent très simplement :
1
def
TraverserDepuisRecursive(graphe,sommet):
2
sommets_visites.append(sommet)
3
print
sommet
4
for
voisin
in
graphe[sommet]:
5
if
(not
voisin
in
sommets_visites):
6
TraverserDepuisRecursive(graphe,
voisin)
8
sommets_visites
=
[
]
9
TraverserDepuisRecursive(dico_graph,
’A’)
1
def
TraverserDepuisIterative(graphe,sommet):
2
sommets_a_visiter
=
[sommet]
3
while
sommets_a_visiter:
4
sommet_courant
=
sommets_a_visiter.pop(0)
5
if
(not
sommet_courant
in
sommets_visites):
6
sommets_visites.append(sommet_courant)
7
print
sommet_courant
8
sommets_a_visiter.extend(graphe[sommet_courant])
10
sommets_visites
=
[
]
11
TraverserDepuisIterative(dico_graph,
’A’)
G=dict()
G['a']=['b','c']
G['b']=['a','d','e']
G['c']=['a','d']
G['d']=['b','c','e']
G['e']=['b','d','f','g']
G['f']=['e','g']
G['g']=['e','f','h']
G['h']=['g']
Programmer en langage python le BFS (breadth first search) avec les variables suivantes :
• Un dictionnaire P. En fin de parcours, pour tout sommet s du graphe P[s] sera le
père de s, c'est à dire le sommet à partir duquel le sommet s a été découvert lors du
parcours.
• Un dictionnaire couleur. Pour tout sommet s, couleur[s] vaut blanc si le sommet s
n'est pas passé dans la file, gris s'il est dans la file, noir lorsqu'il est sorti de la file.
• Une liste Q utilisée comme file (fifo) : on enfile un sommet lorsqu'il est découvert,
on le défile lorsqu'il est terminé (traitement prioritaire des sommets découverts au
plus tôt).
L'ordre de parcours est : ligne après ligne (de la racine vers les feuilles) et de gauche à
droite pour une ligne.
c. Codage en python
def
bfs(G,s)
:
couleur=dict()
for
x
in
G
:
couleur[x]='blanc'
P=dict()
P[s]=None
couleur[s]='gris'
Q=[s]
while
Q
:
u=Q[0]
for
v
in
G[u]
:
if
couleur[v]=='blanc'
:
P[v]=u
couleur[v]='gris'
Q.append(v)
Q.pop(0)
couleur[u]='noir'
return
P
3.2. Parcours en profondeur DFS (depth first search)
Si on prend pour exemple le XOR sur 1 couche cachée à 2 neurones, qu’on se donne en
entrée 1, 0, alors avec les poids indiqués, on trouve pour la couche cachée des sorties 1 et -
1, puis en sortie finale 1. Vous pourrez tester que le réseau de neurones proposé avec ces
poids résout bien le XOR.
On prendra comme exemple une recherche sur 10 villes avec les distances entre villes
suivantes :