Ford Fulkerson maximum débit minimum Cut Algorithme - Utilisation de Matlab, C ++ et Java pour résoudre Max débit Min Cut

Mars 31, 2016 Admin Technologie 0 115
FONT SIZE:
fontsize_dec
fontsize_inc

Je suis sûr que si vous puisé profondément dans le réseau informatique, vous avez peut-être rencontré l'algorithme de débit minimum Massimo Cut également appelé l'Algorithme Ford Fulkerson.

L'idée de base de cet algorithme est de prendre un diagramme de réseau avec un nombre de noeuds et liaisons du réseau de chaque noeud. Chaque nœud montrera combien la capacité peut coulisser le long du lien. Nous voulons trouver un moyen d'obtenir le débit maximal de la source à la destination, cela signifie généralement pour écraser ou des liens avec une capacité relativement faible par rapport à d'autres noeuds voisins. L'algorithme Ford Fulkerson est tout simplement un algorithme pour calculer la capacité maximale, qui est directement liée au minimum de sorte que son plus ou moins la même chose.




Récemment, je essayais de déterminer le max et min coupé pour un réseau planifiait et je ai trouvé de nombreuses façons de résoudre le problème maximale de coupe minimum de flux. Parmi ceux-ci, en utilisant Matlab, C ++ ou Java. La méthode la plus simple est certainement avec MATLAB et passera par la façon dont vous pouvez développer votre réseau et de calculer les valeurs de débit maximal et minimu coupe.

A noter également: Grande animation interactive qui vous guide à travers le minimum de débit théorème de coupe maximale www.cse.yorku.ca/~aaw/Wang/MaxFlowStart.htm

Un peu 'histoire de la connaissance

Cut maximum

Le problème de l'écoulement maximale se applique à trouver le plus approprié & Mode possible grâce à une source et puits de réseau unique. Il est également vu que le montant maximum de flux que nous pouvons obtenir de la source à la destination qui est un facteur extrêmement important, en particulier dans des réseaux de données où on préfère un débit maximal et un délai minimal.

Trouver le débit maximal implique de regarder du tout itinéraires possibles entre la source et la destination. Lorsque le réseau est conçu les connexions sont des canaux d'écoulement ayant une capacité limitée. Possible trouver attribuant à chaque liaison de flux dans le réseau de sorte que le débit total de la source à la destination est le plus grand possible.

La source de couler débit maximal dans un réseau est égal à Évier minimum coupe dans le réseau, ce qui est le débit maximal Valeur nominale minimum Théorème.

Dénomination minimale

Une coupe est un ensemble de liens directs contenant au moins un Lien en aucune manière à partir du noeud source au noeud de destination. Cela signifie que si le connexions sont supprimés à couper le débit de la source à la destination est complètement coupé. La valeur de seuil est la somme de la capacité d'écoulement dans le noeud de source à la direction de toutes les connexions. Le problème est de trouver une réduction minimale coupant à travers le réseau qui a la valeur minimale couper plus possible coupe.

Le problème de l'écoulement maximale est étroitement corrélée au minimum couper problème, la création de coupe théorème capacité maximale minimum.

Méthode manuelle

Ce est également possible de calculer le max et min coupé manuellement, mais peut prendre beaucoup de temps. Une méthode consiste à comprendre l'algorithme et présenter toutes les mathématiques derrière elle, mais qu'il est difficile et couvrira une méthode manuelle facile.

L'idée de base est de prendre votre schéma de réseau, puis

- Dessiner couper à travers les noeuds de réseau qui séparent la source et la destination

- Les coupures sur le réseau vont passer à travers une série de liens

- Ajouter les valeurs de la capacité de connexion des coupes

- Maintenant, regardez à travers toutes les coupes, et celui avec la valeur de capacité plus petite est votre dénomination minimum.

Ce est tout bon, mais quand il se agit de réseaux complexes sera un million de coupes dans tout le magasin que vous irez fou en essayant de les localiser.

Utilisation de MATLAB pour résoudre

Jusqu'à présent, la meilleure façon de calculer le débit maximum et réduction minimale sur ne importe quel réseau que vous voulez est d'utiliser MATLAB, un logiciel de mathématiques puissant. Le grand chose sur MATLAB, ce est qu'il a intégré dans les contrôles conçus spécifiquement pour résoudre cet algorithme. Ce qui le rend incroyablement simple.

Remarque: Matlab version de 2008 ou au-delà est recommandé autrement, des erreurs peuvent survenir.

Pour tous ceux qui sont nouveaux dans MATLAB suffit d'exécuter ces commandes par le biais de la ligne de commande, parfois la fenêtre ne sera pas fenêtre ouverte simple clic sur la barre d'outils et sélectionnez la fenêtre de la ligne de commande.

Instructions Matlab

1.) Créer une matrice qui raconte MATLAB nombre de nœuds, liens, et la façon dont les liens reliant des nœuds, ainsi que la capacité de lier

cm = clairsemé ([1 1 2 2 3 4 4 5 5 6 7 8 9 9], [3 2 3 4 5 6 7 6 7 8 9 10 8 10], [15 10 3 9 8 7 6 5 2 12 10 10 6 8], 10,10

Ici je ai créé ma matrice pour écouter high-low algorithme de coupe sur. La conception du réseau se présente comme suit

Source

1 1 2 2 3 4 4 5 5 6 7 8 9 9

Destination

2 3 3 4 5 6 7 6 7 8 9 10 8 10

Capacité

2 3 1 2 3 4 5 6 2 3 2 4 2 2

Matlab Réseau Voir

Matlab - coupe Finding Débit Max et Min

Nous pouvons alors trouver le débit maximal et la coupe minimale avec commandement

[M, F, K] = graphmaxflow (cm, 1.10) [par exemple, ci-dessus]

M = le débit maximal

F = débit sur chaque lien

K = coupe minimale (résultat montré dans la matrice)

cm = Fait référence à la collecte de données que vous avez entré plus tôt, un N x N matrice

1 = Le noeud source

10 = le noeud de destination

Une fois que vous utilisez cette commande permet d'afficher les résultats de la circulation de Max, le débit sur chaque lien et Cut minimum.

Affichage du débit maximal de diagramme de réseau

Vista (Biograph (F, [], "ShowWeights ',' a '))

Vista Cut minimum

set (h.Nodes (K (1, smile), 'Couleur', [1 0 0])

(Remarque: Vous devez garder la vue de diagramme de réseau de la solution à la coupe minimum originale)

Donc, ce est plus ou moins pour résoudre les dénominations minimales de débit maximal pour un projet de réseau de votre choix, si vous avez des questions faites le moi savoir et je vais essayer de vous aider.

Autres méthodes

Il ya beaucoup d'autres façons de résoudre le problème de la dénomination minimum de débit maximal et ceux-ci comprennent l'utilisation de C ++, Java, XML et quelques autres (vous pouvez le faire dans Mathcad et gobelins)

Certains lien ci-dessous pour le code pour le flux Min Max Cut

C ++

http://www.cs.ucl.ac.uk/staff/V.Kolmogorov/software.html

http://www.pastey.net/115644-14wn - code des découpes de flux min maximum

Java

http://www-b2.is.tokushima-u.ac.jp/~ikeda/suuri/maxflow/Maxflow.shtml

Matlab

Ford Paquet Fulkerson (bonne alternative à la méthode ci-dessus) - http://www.mathworks.com.au/matlabcentral/fileexchange/19439

Avoir un autre code, y compris quelque part XML coller le code quand je trouve.

(0)
(0)

Commentaires - 0

Sans commentaires

Ajouter un commentaire

smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile
Caractères restants: 3000
captcha