Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 1) matrix = [[0, 1, 1, 0, 1],
- [1, 0, 0, 0, 0],
- [1, 0, 0, 1, 1],
- [0, 0, 1, 0, 1],
- [1, 0, 1, 1, 0]]
- 2)
- a) Ce programme permet de détecter la présence de cycles dans un graphe.
- b)
- File: File contenant les prochains points a visiter.
- Visites: Liste donnant pour chaque noeud l'information de si il a déjà été visité ou non.
- Parent: Donne le prédécesseur direct de chaque noeud pour éviter de compter un demi-tour comme un cycle.
- Courant: Noeud actuellement en cours de visite.
- c)
- n | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 |
- -------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|
- u | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
- -------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|
- file | [0] -> [] | [] | [1] | [1, 2] | [1, 2] | [2, 4] | [2, 4] | [2, 4] | [2, 4] | [2, 4] | [4] | [4] | [4] | [4] | [4] | [] |
- -------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|
- visites| [True, False, False, False, False] | [True, False, False, False, False] | [True, True, False, False, False] | [True, True, True, False, False] | [True, True, True, False, False] | [True, True, True, False, True] | [True, True, True, False, True] | [True, True, True, False, True] | [True, True, True, False, True] | [True, True, True, False, True] | [True, True, True, False, True] | [True, True, True, False, True] | [True, True, True, False, True] | [True, True, True, False, True] | [True, True, True, True, True] | [True, True, True, False, True] |
- -------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|
- parent | [-1, -1, -1, -1, -1] | [-1, -1, -1, -1, -1] | [-1, 0, -1, -1, -1] | [-1, 0, 0, -1, -1] | [-1, 0, 0, -1, -1] | [-1, 0, 0, -1, 0] | [-1, 0, 0, -1, 0] | [-1, 0, 0, -1, 0] | [-1, 0, 0, -1, 0] | [-1, 0, 0, -1, 0] | [-1, 0, 0, -1, 0] | [-1, 0, 0, -1, 0] | [-1, 0, 0, -1, 0] | [-1, 0, 0, -1, 0] | [-1, 0, 0, 2, 0] | [-1, 0, 0, 2, 0] |
- -------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|
- courant| 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 2 | 2 | 2 | 2 | 2 | 4 |
- -------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|
- i | 0 | 1 | 2 | 3 | 4 | 0 | 1 | 2 | 3 | 4 | 0 | 1 | 2 | 3 | 4 | 0 |
- -------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|------------------------------------|
- matrix = [[0, 1, 1, 0, 1],
- [1, 0, 0, 0, 0],
- [1, 0, 0, 1, 1],
- [0, 0, 1, 0, 1],
- [1, 0, 1, 1, 0]]
- voies_du_jedi = [[1]]
- culs_de_sac = []
- boucles = []
- boucles_taillees = []
- def tailler(boucle):
- indexs = []
- for i, x in enumerate(boucle):
- if boucle.count(x) > 1:
- indexs.append(i)
- if len(indexs) == 2:
- return boucle[indexs[0]:indexs[1]]
- def chercher(liste, element):
- i = -2
- for k, y in enumerate(liste):
- if y == element:
- return k
- return i
- def PARKOUR(voix):
- populi = []
- plus = -1
- for i, x in enumerate(matrix[voix[-1]]):
- if x == 1 and chercher(voix, i) < len(voix)-2:
- v = voix.copy()
- v.append(i)
- populi.append(v)
- plus += 1
- return populi, plus
- while len(voies_du_jedi) != 0:
- vox, avenir = PARKOUR(voies_du_jedi[0])
- #print(voies_du_jedi)
- boucle = False
- if avenir == -1:
- culs_de_sac.append(voies_du_jedi.pop(0))
- boucle = True
- else:
- for x in voies_du_jedi[0]:
- if voies_du_jedi[0].count(x) > 1:
- boucle = True
- if boucle == True:
- boucles.append(voies_du_jedi.pop(0))
- if not boucle:
- voies_du_jedi.pop(0)
- voies_du_jedi.extend(vox)
- #print(culs_de_sac, boucles)
- for boucle in boucles:
- b = tailler(boucle)
- b.sort()
- if not b in boucles_taillees:
- boucles_taillees.append(b)
- print("Nous avons détecté "+str(len(boucles_taillees))+" boucles dans ce graphe:")
- for b in boucles_taillees:
- print("-"+str(b))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement