Table des matières
Terminologie de l'algorithme de Ford-Fulkerson
Exemple de principe de l'algorithme Ford-Fulkerson
Python implémente l'algorithme de Ford-Fulkerson
Maison développement back-end Tutoriel Python Analyser l'algorithme Ford-Fulkerson et l'implémenter via Python

Analyser l'algorithme Ford-Fulkerson et l'implémenter via Python

Jan 22, 2024 pm 08:09 PM
贪心算法

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. .

Ford-Fulkerson算法概念详解 Python实现Ford-Fulkerson算法

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.

Ford-Fulkerson算法概念详解 Python实现Ford-Fulkerson算法

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.

Ford-Fulkerson算法概念详解 Python实现Ford-Fulkerson算法

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.

Ford-Fulkerson算法概念详解 Python实现Ford-Fulkerson算法

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))
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

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

<🎜>: Grow A Garden - Guide de mutation complet
4 Il y a quelques semaines By DDD
<🎜>: Bubble Gum Simulator Infinity - Comment obtenir et utiliser les clés royales
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Système de fusion, expliqué
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Comment déverrouiller le grappin
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Sujets chauds

Tutoriel Java
1677
14
Tutoriel PHP
1280
29
Tutoriel C#
1257
24
Comment implémenter un algorithme glouton en C# Comment implémenter un algorithme glouton en C# Sep 19, 2023 am 11:48 AM

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 ? Comment implémenter une solution efficace au problème du moindre changement de pièce en PHP en utilisant l'algorithme glouton ? Sep 19, 2023 am 10:22 AM

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.

Analyser l'algorithme Ford-Fulkerson et l'implémenter via Python Analyser l'algorithme Ford-Fulkerson et l'implémenter via Python Jan 22, 2024 pm 08:09 PM

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 ? Comment implémenter un algorithme glouton en utilisant Python ? Sep 19, 2023 am 11:43 AM

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 écrire un algorithme glouton en utilisant PHP Comment écrire un algorithme glouton en utilisant PHP Jul 07, 2023 pm 03:45 PM

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

Algorithme gourmand et son implémentation en C++ Algorithme gourmand et son implémentation en C++ Aug 22, 2023 am 10:04 AM

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 implémenter un algorithme glouton en utilisant Java Comment implémenter un algorithme glouton en utilisant Java Sep 19, 2023 am 11:13 AM

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

Programme C/C++ pour un algorithme glouton pour trouver le nombre minimum de pièces Programme C/C++ pour un algorithme glouton pour trouver le nombre minimum de pièces Sep 19, 2023 pm 11:01 PM

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

See all articles