#NoTrayIcon
#include <array.au3>
global $graphe,$sommet
global $sommet_initial=0
global $i=5,$j=5
global $arc[$i][$j]
global $poids_u,$poids_u_v,$poids_v
global $paux
global $pred_v
global $nbre_sommets
global $arc,$poids_u,$poids_v
global $arr
sommets()
arc()
ford()
_ArrayDisplay($arr)
Func sommets()
$nbre=InputBox("Nombre de sommets","Indiquer le nombre de sommets ",10)
For $nbre=0 to 1 step -1
MsgBox(64,"test",$nbre,5)
Next
;~ lister la valeur et le nom de tous les sommets
;~ Local $arr[3][3] = [[1, 2, 3], [2, 3, 4], [3, 4, 5]]
;~ Local $i, $j
;~ For $i = 0 to UBound( $arr, 1) - 1
;~ For $j = 0 to UBound($arr, 2) - 1
;~ ConsoleWrite("$arr[" & $i & "][" & $j & "]:=" & $arr[$i][$j] & @LF)
;~ Next
;~ ConsoleWrite(@LF)
;~ Next
EndFunc
Func arc()
MsgBox(64,"Lister les arc",$arc,10)
EndFunc
Func ford()
For $i = 5 to 1 Step -1
ConsoleWrite($i)
Next
EndFunc
J'ai édité votre code, afin de le rendre plus présentable.
Essayez d'utiliser Scite4AutoIt pour écrire votre code, car en utilisant la combinaison de touche CTRL + T, votre code aura une indentation plus correcte.
En ce qui concerne la résolution de votre problème, je ne puis vous aider, car je ne m'y connais pas du tout en algo.
;~ http://fr.wikipedia.org/wiki/Algorithme_de_Ford-Fulkerson
;~ http://www.math.u-psud.fr/~montcouq/Enseignements/Apprentis/distance.pdf
#NoTrayIcon
#include <array.au3>
Dim $nb
$nb = InputBox("Algorithme de Ford-Fulkerson", "Nombre de sommets : ", 5)
Global $d[$nb] ; "" = Infini
Global $P[$nb] ; "" = Nul
Global $G[$nb] ; Nom des sommets
Global $v[$nb][$nb] ; Distance entre deux sommets
;~ Initialise les variables
Init($nb)
$fini = False
Do
_ArrayDisplay($d)
_ArrayDisplay($P)
_ArrayDisplay($G)
_ArrayDisplay($v)
$fini = True ;Si c'est la fin..... ;-)
Until $fini
Func Init($nb)
For $i = 0 to $nb - 1
$d[$i] = ""
$P[$i] = ""
$G[$i] = InputBox("Nom du sommet",$i & " : ")
Next ; $i
$d[0] = 0
For $i = 0 to $nb - 1
For $j = $i+1 to $nb - 1
$v[$i][$j] = InputBox("Distance entre deux sommets","v(" & $G[$i] & ", " & $G[$j] & " ) = ")
Next ; $j
Next ; $i
EndFunc
Bon courage
Y a pas de problème, y a que des solutions. Reste à les trouver.
;~ http://fr.wikipedia.org/wiki/Algorithme_de_Ford-Fulkerson
;~ http://www.math.u-psud.fr/~montcouq/Enseignements/Apprentis/distance.pdf
#NoTrayIcon
#include <array.au3>
Dim $nb
$nb = InputBox("Algorithme de Ford-Fulkerson", "Nombre de sommets : ", 4)
Global $S[$nb] ; Liste des sommets --> Sommet
Global $A[$nb][$nb] ; Distance entre deux sommets --> Arc
Global $M[2*$nb] ; Matrice de calculs
;~ Initialise les variables
Init($nb)
#cs
Global $S[4]=["A","B","C","D"]
Global $A[4][4]=[["",8,6,2],["","","",""],["",3,"",""],["",5,1,""]]
#ce
_ArrayDisplay($S,"Liste des sommets")
_ArrayDisplay($A,"Distance entre les sommets")
_ArrayDisplay($M,"Matrice de Calculs")
$fini = False
Do
$fini = True ;Si c'est la fin..... ;-)
For $x = 0 to $nb - 1
For $y = 0 to $nb - 1
If $A[$x][$y] <> "" Then ; Liaison existante
ConsoleWrite($M[$x] + $A[$x][$y] & " < " & $M[$y] & @CRLF)
If (($M[$x] + $A[$x][$y] < $M[$y]) OR ($M[$y]="")) Then
$M[$y] = $M[$x] + $A[$x][$y]
$M[$y+$nb] = $S[$x]
$fini = False ;Si c'est pas la fin..... ;-(
EndIf
EndIf
Next ; $y
Next ; $x
_ArrayDisplay($M,"Matrice Intermédiaire")
Until $fini
_ArrayDisplay($M,"Matrice finale")
Func Init($nb)
For $i = 0 to $nb - 1
$S[$i] = InputBox("Nom du sommet","N° " & $i & " : " )
Next ; $i
For $i = 0 to $nb - 1
For $j = 0 to $nb - 1
$A[$i][$j] = InputBox("Distance entre deux sommets","v(" & $S[$i] & ", " & $S[$j] & " ) = "& @CRLF & @CRLF & "vide pour infini --> Pas d'arc")
Next ; $j
Next ; $i
For $i =0 to (2*$nb) - 1
$M[$i] =""
Next ; $i
$M[0] =0
EndFunc
Y a pas de problème, y a que des solutions. Reste à les trouver.
;~ http://fr.wikipedia.org/wiki/Algorithme_de_Ford-Fulkerson
;~ http://www.math.u-psud.fr/~montcouq/Enseignements/Apprentis/distance.pdf
#NoTrayIcon
#include <array.au3>
Dim $nb
$nb = InputBox("Algorithme de Ford-Fulkerson", "Nombre de sommets : ", 4)
Global $S[$nb] ; Liste des sommets --> Sommet
Global $A[$nb][$nb] ; Distance entre deux sommets --> Arc
Global $M[2*$nb] ; Matrice de calculs
;~ Initialise les variables
Init($nb)
#cs
Global $S[4]=["A","B","C","D"]
Global $A[4][4]=[["",8,6,2],["","","",""],["",3,"",""],["",5,1,""]]
#ce
_ArrayDisplay($S,"Liste des sommets")
_ArrayDisplay($A,"Distance entre les sommets")
_ArrayDisplay($M,"Matrice de Calculs")
$fini = False
Do
$fini = True ;Si c'est la fin..... ;-)
For $x = 0 to $nb - 1
For $y = 0 to $nb - 1
If $A[$x][$y] <> "" Then ; Liaison existante
ConsoleWrite($M[$x] + $A[$x][$y] & " < " & $M[$y] & @CRLF)
If (($M[$x] + $A[$x][$y] < $M[$y]) OR ($M[$y]="")) Then
$M[$y] = $M[$x] + $A[$x][$y]
$M[$y+$nb] = $S[$x]
$fini = False ;Si c'est pas la fin..... ;-(
EndIf
EndIf
Next ; $y
Next ; $x
_ArrayDisplay($M,"Matrice Intermédiaire")
Until $fini
_ArrayDisplay($M,"Matrice finale")
Func Init($nb)
For $i = 0 to $nb - 1
$S[$i] = InputBox("Nom du sommet","N° " & $i & " : " )
Next ; $i
For $i = 0 to $nb - 1
For $j = 0 to $nb - 1
$A[$i][$j] = InputBox("Distance entre deux sommets","v(" & $S[$i] & ", " & $S[$j] & " ) = "& @CRLF & @CRLF & "vide pour infini --> Pas d'arc")
Next ; $j
Next ; $i
For $i =0 to (2*$nb) - 1
$M[$i] =""
Next ; $i
$M[0] =0
EndFunc