


Analyser l'algorithme Ford-Fulkerson et l'implémenter via Python
L'algorithme Ford-Fulkerson est un algorithme glouton utilisé pour calculer le trafic maximum sur le réseau. Le principe est de trouver un chemin augmentant avec une capacité restante positive. Tant que le chemin augmentant est trouvé, vous pouvez continuer à ajouter des chemins et à calculer le trafic. Jusqu'à ce que le chemin d'augmentation n'existe plus, le débit maximum peut être obtenu.
Terminologie de l'algorithme de Ford-Fulkerson
Capacité restante : c'est la capacité moins le flux. Dans l'algorithme de Ford-Fulkerson, la capacité restante est un nombre positif avant de pouvoir continuer à être un chemin.
Réseau résiduel : C'est un réseau avec les mêmes sommets et arêtes, utilisant la capacité résiduelle comme capacité.
Chemin augmenté : C'est le chemin du point source au point récepteur dans le graphe résiduel, avec une capacité finale de 0.
Exemple de principe de l'algorithme Ford-Fulkerson
Le concept n'est peut-être pas très clair. Regardons un exemple. Le trafic initial de tous les bords du réseau de flux est de 0, et il existe une limite de capacité supérieure correspondante. être S et le point de réception être T. .

Chemin un, la capacité restante du chemin S-A-B-T est de 8, 9, 2 et la valeur minimale est de 2, donc le trafic du chemin un est de 2 et le trafic du diagramme de réseau est de 2.

Chemin deux, la capacité restante du chemin S-D-C-T est de 3, 4, 5 et la valeur minimale est de 3, nous pouvons donc augmenter le trafic de 3 et le trafic réseau est de 5.

Chemin trois, la capacité restante du chemin S-A-B-D-C-T est de 6, 7, 7, 1, 2 et la valeur minimale est de 1, donc le trafic augmente de 1 et le trafic réseau est de 6.

A ce stade, il n'y a pas de capacité restante positive, et le débit maximum de ce réseau de flux est de 6.
Python implémente l'algorithme de Ford-Fulkerson
from collections import defaultdict class Graph: def __init__(self, graph): self.graph = graph self. ROW = len(graph) def searching_algo_BFS(self, s, t, parent): visited = [False] * (self.ROW) queue = [] queue.append(s) visited[s] = True while queue: u = queue.pop(0) for ind, val in enumerate(self.graph[u]): if visited[ind] == False and val > 0: queue.append(ind) visited[ind] = True parent[ind] = u return True if visited[t] else False def ford_fulkerson(self, source, sink): parent = [-1] * (self.ROW) max_flow = 0 while self.searching_algo_BFS(source, sink, parent): path_flow = float("Inf") s = sink while(s != source): path_flow = min(path_flow, self.graph[parent[s]][s]) s = parent[s] max_flow += path_flow v = sink while(v != source): u = parent[v] self.graph[u][v] -= path_flow self.graph[v][u] += path_flow v = parent[v] return max_flow graph = [[0, 8, 0, 0, 3, 0], [0, 0, 9, 0, 0, 0], [0, 0, 0, 0, 7, 2], [0, 0, 0, 0, 0, 5], [0, 0, 7, 4, 0, 0], [0, 0, 0, 0, 0, 0]] g = Graph(graph) source = 0 sink = 5 print("Max Flow: %d " % g.ford_fulkerson(source, sink))
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds











Comment implémenter l'algorithme glouton en C# L'algorithme glouton (algorithme Greedy) est une méthode de résolution de problèmes couramment utilisée. Il sélectionne à chaque fois la solution optimale actuelle dans l'espoir d'obtenir la solution optimale globale. En C#, nous pouvons utiliser des algorithmes gloutons pour résoudre de nombreux problèmes pratiques. Cet article présentera comment implémenter l'algorithme glouton en C# et fournira des exemples de code spécifiques. 1. Principes de base de l'algorithme glouton L'idée de base de l'algorithme glouton est de choisir à chaque fois la solution optimale actuelle, quel que soit l'impact possible des étapes ultérieures. Ce genre de pensée

Comment implémenter une solution efficace au problème du moindre changement de pièce en PHP en utilisant l'algorithme glouton ? Introduction : Dans la vie quotidienne, nous avons souvent besoin d'apporter des changements, notamment lors de nos achats ou de nos échanges commerciaux. Pour utiliser le moins de pièces possible, le montant de la monnaie doit être combiné en utilisant le moins de pièces possible. En programmation informatique, nous pouvons utiliser un algorithme glouton pour résoudre ce problème afin d'obtenir une solution efficace. Cet article présentera comment utiliser l'algorithme glouton en PHP pour obtenir une solution efficace au problème de changement minimum de pièces et fournira des exemples de code correspondants.

L'algorithme de Ford-Fulkerson est un algorithme glouton permettant de calculer le débit maximum dans un réseau. Le principe est de trouver un chemin augmentant avec une capacité restante positive. Tant que le chemin augmentant est trouvé, vous pouvez continuer à ajouter des chemins et à calculer le trafic. Jusqu'à ce que le chemin d'augmentation n'existe plus, le débit maximum peut être obtenu. Le terme capacité restante de l'algorithme de Ford-Fulkerson consiste à soustraire le flux de la capacité. Dans l'algorithme de Ford-Fulkerson, la capacité restante est un nombre positif avant de pouvoir continuer à être utilisée comme chemin. Réseau résiduel : C'est un réseau avec les mêmes sommets et arêtes, utilisant la capacité résiduelle comme capacité. Chemin augmenté : C'est le chemin du point source au point récepteur dans le graphe résiduel, avec une capacité finale de 0. Un aperçu possible de l'exemple de principe de l'algorithme de Ford-Fulkerson

Comment implémenter un algorithme glouton en utilisant Python ? L'algorithme gourmand est un algorithme simple et efficace adapté à la résolution de problèmes avec des propriétés de sous-structure optimales. Il prend le meilleur choix dans l’état actuel à chaque étape de sélection, en espérant trouver la solution globale optimale. Dans cet article, nous présenterons comment utiliser Python pour implémenter l'algorithme glouton, avec des exemples de code spécifiques. 1. L'idée de base de l'algorithme glouton L'idée de base de l'algorithme glouton est de sélectionner la solution optimale dans l'état actuel à chaque étape, puis

Comment utiliser PHP pour écrire un algorithme glouton L'algorithme gourmand (algorithme gourmand) est un algorithme simple et efficace utilisé pour résoudre un type de problème d'optimisation. Son idée fondamentale est de faire, à chaque étape, le choix qui semble le meilleur sur le moment, sans égard aux conséquences futures. Cet article expliquera comment écrire un algorithme glouton en utilisant PHP et fournira des exemples de code pertinents. 1. Description du problème Avant d'expliquer l'algorithme glouton, définissons d'abord un problème spécifique pour une meilleure compréhension. Supposons qu'il existe un ensemble de tâches, chaque tâche a un début

L’algorithme glouton est une idée d’algorithme couramment utilisée et largement utilisée dans de nombreux problèmes. L’idée centrale est de considérer uniquement la solution optimale immédiate lors de la prise de décision à chaque étape, sans tenir compte de l’impact à long terme. En C++, la mise en œuvre d’algorithmes gloutons implique souvent des opérations de base telles que le tri et le traitement des données. Ci-dessous, nous présenterons l'idée d'un algorithme glouton et son implémentation en C++ pour plusieurs problèmes typiques. 1. Problème de planification des activités Étant donné un ensemble d'activités, chaque activité a son heure de début et son heure de fin, et une personne ne peut participer qu'à une seule activité à la fois.

Comment utiliser Java pour implémenter un algorithme glouton L'algorithme glouton (GreedyAlgorithm) est une idée algorithmique pour résoudre des problèmes. Sa caractéristique est de sélectionner la solution optimale actuelle à chaque étape, dans l'espoir d'atteindre éventuellement la solution optimale globale à travers chaque solution optimale locale. Les caractéristiques simples et efficaces de l’algorithme glouton en font un algorithme couramment utilisé lors de la résolution de certains problèmes d’optimisation ou de certains problèmes spécifiques. Cet article présentera comment implémenter l'algorithme glouton à l'aide de Java et fournira des exemples de code spécifiques. 1. L'idée de base de l'algorithme glouton La base de l'algorithme glouton

L'algorithme glouton est un algorithme utilisé pour trouver la solution optimale à un problème donné. L'algorithme glouton fonctionne en trouvant une solution optimale locale pour chaque partie (la solution optimale à une partie du problème), montrant ainsi qu'une solution optimale globale peut être trouvée. Dans ce problème, nous utiliserons l’algorithme Greedy Algorithm pour trouver le nombre minimum de pièces/billets pouvant constituer une somme donnée. Pour cela, nous considérerons toutes les pièces ou billets valides, c'est-à-dire les coupures {1,2,5,10,20,50,100,200,500,2000}. Nous devons renvoyer le nombre de pièces/billets nécessaires pour constituer la somme. Donnons quelques exemples pour mieux comprendre le contexte - Exemple 1 - Entrée : 1231 Sortie : 7 Description - Nous avons besoin de deux billets de 500 roupies
