Bahay Pinahiran ng dila Pinakamataas na daloy sa online na graph. Mga pamamaraan para sa paglalapat ng algorithm para sa paghahanap ng maximum na daloy sa isang network

Pinakamataas na daloy sa online na graph. Mga pamamaraan para sa paglalapat ng algorithm para sa paghahanap ng maximum na daloy sa isang network

Algoritmo ng pagkalkula pinakamataas na daloy sa mga network

HAKBANG 1. Paunang takdang-aralin. Kasalukuyang halaga Isang t Ang pinakamataas na daloy sa network ay itinalaga ang halaga na 0. HAKBANG 2. Pagpili ng mga independiyenteng ruta sa network at pagtukoy ng mga daloy sa kanila. Mula sa buong hanay ng mga posibleng ruta sa network mula sa pinagmulan hanggang sa paglubog, pipili kami ng mga independiyenteng ruta M 1 , … , M k, hindi pagkakaroon karaniwang mga vertex, maliban sa una (source v at) at pangwakas (drain v kasama ang). Para sa bawat napiling ruta M i(1£ i£ k) matukoy ang pinakamataas na daloy A(M i).HAKBANG 3. Pagwawasto ng kasalukuyang halaga ng pinakamataas na daloy sa network. Idinagdag namin ang mga natagpuan sa HAKBANG 2 mga halaga ng pinakamataas na daloy sa mga independiyenteng ruta M 1 , … , M k sa kasalukuyang kabuuang maximum na daloy ng network: Isang t:= A t + A(M 1)+ A(M 2)+…+ A(M k)HAKBANG 4. Pagwawasto ng network. Natagpuan sa HAKBANG 2 pinakamataas na daloy A(M 1), … , A(M k) na ibinawas mula sa kapasidad ng kaukulang mga arko ng network. Ang mga arko na may zero na natitirang kapasidad ay tinanggal. HAKBANG 5. Sinusuri ang pagkumpleto ng algorithm. Kung pagkatapos ng pagwawasto ay walang mga ruta mula sa pinagmulan na naiwan sa network v at sa stock v kasama ang, kung gayon ang kinakailangang maximum na daloy sa network ay katumbas ng natagpuang kasalukuyang A:= A t, ang algorithm ay nagwawakas dahil ang lahat ng kapasidad ng network ay naubos na. Kung sa inayos na network ay may mga ruta mula sa pinagmulan v at sa stock v kasama ang, pagkatapos ay pumunta sa HAKBANG 2 at pagpapatuloy ng pagpapatupad ng algorithm . Halimbawa 2. Hanapin ang pinakamataas na daloy sa network sa Fig. 1.15 gamit ang algorithm na ito. Solusyon.HAKBANG 1. Paunang takdang-aralin. Isang t: = 0.

Pag-ulit ko. HAKBANG 2. Pagpili ng mga independiyenteng ruta sa network at pagtukoy ng mga daloy sa kanila. Bilang M 1 daanan ( v at =V 1 , V 2 , V 5 , v s =V 7), isinasaalang-alang sa halimbawa 1. Para sa kanya A(M 1) = 10.

Madali ding ihiwalay ang independyente M 1 ruta M 2 = (v at =V 1 , V 3 , V 6 , v s =V 7). Kalkulahin natin ang maximum throughput para dito at ayusin ang throughput ng mga arc: A(M 2)=min{d 13 ,d 36 ,d 67 } =min{45, 40, 30} = 30. d 13¢ =d 13 - 30 = 15,d 36¢ =d 36 - 30 = 10,d 67¢ =d 67 - 30 = 0.

HAKBANG 3. Pagwawasto ng kasalukuyang halaga ng pinakamataas na daloy sa network. Isang t:= A t + A(M 1)+ A(M 2) = 0 + 10+ 30 = 40.HAKBANG 4. Pagwawasto ng network. Natagpuan sa HAKBANG 2 pinakamataas na daloy A(M 1), A(M 2) sa mga ruta M 1 , M 2 ay ibinabawas sa kapasidad ng kanilang mga arko. Ang mga arko na may zero na natitirang kapasidad ay tinanggal. Ang resulta ay ibinigay sa Fig. 1.16 a. a) b) Larawan 1.16. Resulta ng pagwawasto ng network pagkatapos ng mga pag-ulit ako At IISTEP 5. Sinusuri ang pagkumpleto ng algorithm. Sa naayos na network (Larawan 1.16 a) may mga ruta mula sa pinagmulan v at sa stock v kasama ang, Halimbawa M 3 = (v at =V 1 , V 4 , V 2 , V 5 , v s =V 7). Ipagpatuloy ang pagpapatupad ng algorithm .

II pag-ulit. HAKBANG 2. Bilang ang tanging independiyenteng ruta na ating tinatahak M 3 = (v at =V 1 , V 4 , V 2 , V 5 , v s =V 7). Para sa kanya:

A(M 3)=min{d 14 ,d 42 ,d 25 ,d 57 } =min{15, 10, 10, 15} = 10.

d 14¢ =d 14 - 10 = 5,d 42¢ =d 42 - 10 = 0,d 25¢ =d 25 - 10 = 0,d 57¢ =d 57 - 10 = 5.

HAKBANG 3. A t:= A t + A(M 3) = 40 + 10= 50.

HAKBANG 4. Pagwawasto ng network. Pinakamataas na daloy A(M 3) ibawas mula sa mga arko ng ruta M 13 . Ang resulta ay ibinigay sa Fig. 1.16 b.

HAKBANG 5. Walang natitira pang source-to-sink na ruta sa inayos na network. A:= A t:= 50, pagkumpleto ng algorithm. Sagot: ang maximum na daloy sa network sa Fig. 1.15 ay 50.

Kung ang ilang mga mapagkukunan ay tinukoy sa network, ito ay nakumpleto sa pamamagitan ng pagpapakilala ng isang bagong karaniwang mapagkukunan, na konektado sa mga orihinal na mapagkukunan sa pamamagitan ng mga arko na may walang limitasyong kapasidad. Pagkatapos ang problema ay malulutas sa pamamagitan ng sa karaniwang algorithm. Ang mga kinakailangang daloy sa mga orihinal na mapagkukunan ay magiging mga daloy kasama ang mga bagong idinagdag na arko na pumapasok sa kanila mula sa isang bagong karaniwang pinagmulan. Gawin ang parehong kung mayroong ilang mga drains sa network.

Pagpaplano ng network

Anumang gawain ng pagdidisenyo o paggawa ng medyo kumplikadong bagay ( proyekto) ay maaaring hatiin sa ilang mas maliliit na hakbang sa bahagi. Mula sa Ang tamang desisyon Ang pagkakasunud-sunod ng mga hakbang na ito ay depende sa timing ng buong proyekto.

Ang buong hanay ng mga aksyon para ipatupad ang proyekto ay ipinakita bilang isang set mga pangyayari At gumagana. Ang mga kaganapan ay tinatawag na mga indibidwal na yugto ng isang proyekto. Ang trabaho ay ang proseso ng pagkumpleto nito. Ang buong kumplikado ng mga kaganapan at trabaho na kinakailangan upang makumpleto ang proyekto ay maaaring katawanin sa anyo ng isang dalawang-pol na network G =({v at, v z} , V, X), kung saan:

at lahat mga pangyayari minarkahan ng isang hanay ng mga vertex V, naka-highlight sa kanila paunang kaganapan v at(pagsisimula ng trabaho) at huling kaganapan v z(pagkumpleto ng buong proyekto), ang mga panloob na vertex ng network ay tumutukoy mga intermediate na kaganapan- ang mga hakbang na kailangang kumpletuhin sa proseso pagpapatupad ng proyekto,

b) lahat trabaho ay ipinahiwatig ng mga arko na nagkokonekta sa mga pares ng mga kaganapan - mga vertice.

Ang graphical na representasyon ng network na ito ay tinatawag diagram ng network. Upang ipahiwatig ang pagkakasunud-sunod ng mga aksyon, pumasok din sa diagram ng network gawa-gawa lamang, na hindi nauugnay sa pagsasagawa ng anumang mga aksyon. Ang kaukulang mga gawa ay ipinahiwatig ng mga dashed arc.

Bilang halimbawa, isaalang-alang ang organisasyon ng ilang produksyon. Ang proyekto ay nangangailangan ng sumusunod na gawain:

I) pananaliksik sa marketing, II) pananaliksik bago ang disenyo sa kagamitan, III) pag-aayos ng network ng pagbebenta, IV) pagsasagawa kampanya sa advertising, V) pagbuo ng mga teknikal na pagtutukoy para sa kagamitan sa produksyon, VI) pag-unlad teknikal na dokumentasyon para sa mga lugar ng produksyon at komunikasyon, VII) pagbili ng karaniwang kagamitan, VIII) disenyo at paggawa ng hindi karaniwang kagamitan, IX) pagtatayo ng mga lugar ng produksyon at pag-install ng mga komunikasyon, X) pag-install ng karaniwang kagamitan, XI) pag-install ng hindi karaniwang kagamitan , XII) commissioning.

Ipapahiwatig namin ang mga gawang ito sa diagram ng network sa pamamagitan ng mga arko na may kaukulang mga numero.

Ang mga kaganapan sa proyektong ito ay ang mga sumusunod:

1) pagsisimula ng trabaho (paunang kaganapan), 2) pagkumpleto pananaliksik sa marketing, 3) pagkumpleto ng mga pag-aaral bago ang disenyo, 4) organisasyon ng isang network ng pagbebenta, 5) organisasyon ng isang kampanya sa advertising, 6) paghahanda ng mga teknikal na pagtutukoy para sa mga kagamitan sa produksyon, 7) pagkumpleto ng pagbuo ng teknikal na dokumentasyon para sa mga lugar ng produksyon at komunikasyon , 8) pagkumpleto ng pagbili ng mga karaniwang kagamitan, 9) pagkumpleto ng disenyo at paggawa ng mga hindi pamantayang kagamitan, 10) pagkumpleto ng pagtatayo ng mga pasilidad sa produksyon at pag-install ng mga komunikasyon, 11) pagkumpleto ng pag-install ng kagamitan at pag-commissioning na mga gawa,

12) pagkumpleto ng proyekto (panghuling kaganapan).

Iniuugnay namin ang mga vertex sa mga katumbas na numero sa mga kaganapan. Diagram ng network Ang pagpapatupad ng proyekto ay ipinapakita sa Fig. 1.17:



Fig.1.17. Iskedyul ng network ng pagpapatupad ng proyekto

Mga siklo ng Hamiltonian

Ang graph ay ibinibigay sa anyo ng isang matrix, kung saan tinukoy ng mga cell ang halaga ng paggalaw sa pagitan ng mga punto. Ang simbolong ∞ ay inilalagay sa pangunahing dayagonal upang maalis ang walang kabuluhang landas patungo sa sarili nito.

kasi Kung ang resultang matrix ay naglalaman ng isang haligi na walang zero na elemento, makikita natin ang pinakamababang elemento dito at ibawas ito mula sa lahat ng mga elemento ng column na ito.

A B C D
A
B
C
D

Ibuod natin ang lahat ng ibinawas na elemento at kunin ang lower bound ng cycle sa= 2+2+3+2+1=10

1.2. Suriin natin ang lahat ng zero na elemento ng matrix.

Ito ay maginhawa upang ipakita ang pagtatantya ng mga zero sa isang talahanayan.

A B C D
A
B
C
D

θ=max γ=γ A C =2

1.3. Hatiin natin ang hanay ng mga landas sa dalawang subset: Q A.C.– mga landas na naglalaman ng arko (AC) at Q A.C.– mga landas na hindi naglalaman ng arko (AC). Para sa pangalawang subset ang lower bound ay magiging: sa / = sa + θ =10+2=12.

Upang kalkulahin ang hangganan para sa unang subset, lumipat kami sa matrix ng isang pagkakasunud-sunod ng magnitude na mas mababa, na tumatawid sa A-row at C-column. Sa bagong matrix para alisin ang reverse path (CA), inilalagay namin ang sign ∞ sa kaukulang cell.

Kalkulahin natin ang hangganan ng resultang matrix 2+0=2

at idagdag ito sa ibabang hangganan ng loop. Ang halagang ito sa // =10+2=12 at magiging hangganan para sa unang subset.

1.4. Ihambing natin ang mga hangganan ng lahat ng nakabitin na vertex at piliin ang vertex na may pinakamaliit na hangganan. Kung mayroong dalawa sa mga vertex na ito, pumili ng alinman sa mga ito. Ito ang tuktok ng Q A.C., na ang mas mababang limitasyon ay =12.



Piliin natin ang maximum ng mga pagtatantya θ=max γ=γ BD =3

sa / =12+3=15.

1.6. Ginagawa namin ang lahat ng kasunod na mga punto nang katulad ng mga nauna.

Piliin natin ang maximum ng mga pagtatantya θ=max γ=γ C B =

sa / =in+ θ=∞

A
D

Ang lahat ng mga row at column ng matrix na ito ay naglalaman ng mga zero. Samakatuwid, ang limitasyon ay nananatiling katumbas ng 12.

GAWAIN. Hanapin ang halaga ng pinakamataas na daloy sa network ng transportasyon.

PAGBUO NG PROBLEMA.

Isaalang-alang ang problema sa transportasyon sa network ( Ako, D, G) na may ibinigay na mga kapasidad ng arko c(i,j).

Pumili tayo ng dalawang nakapirming vertex: s- pinagmulan at t– alisan ng tubig. Stream sa network s→t tawagin natin ang numerical function f, tinukoy sa isang hanay ng mga arko at nagbibigay-kasiyahan sa mga sumusunod linear na equation at hindi pagkakapantay-pantay:

0≤ f(i,j) ≤c(i,j) para sa anumang (i,j)

Kinakailangan upang i-maximize ang isang variable x

Gupitin si L sa isang network na naghihiwalay sa mga vertex s t tinatawag na hanay ng mga arko

Kahit anong paraan s→t naglalaman ng hindi bababa sa isang cut arc.

OPTIMALITY CRITERIA: sa isang tunay na network, ang halaga ng isang arbitrary na daloy ay hindi lalampas sa throughput ng cut, at ang halaga ng maximum na daloy ay katumbas ng pinakamababang throughput ng cut.

HALIMBAWA 3.12.

M 9 K

M 8 K

HALIMBAWA 3.13.

M 2 K

SOLUSYON :

Ang kapasidad ng papalabas na arko (T,B) ay lumampas sa kabuuang kapasidad ng mga arko na pumapasok sa kaukulang vertex. Upang maging totoo ang network, pinapalitan namin ang c(T,B)=5.

Hanapin at kalkulahin natin ang halaga ng mga kapasidad ng throughput ng lahat ng mga pagbawas. (K,V) – (T,V) cut na may pinakamababang throughput =6. Samakatuwid, ang maximum na daloy =6.

Ang isang network na may maraming source at sink ay maaaring gawing network na may isang source at sink.

HALIMBAWA. Hayaang mayroong maraming mga mapagkukunan S at lumubog T ( problema sa transportasyon). Palawakin natin ang network sa pamamagitan ng pagdaragdag ng dalawang node s*, t* at lahat ng arc (s*, S) , (T,t*). Tukuyin natin ang function ng kapasidad sa pamamagitan ng pagtatakda

PARAAN NG PAGLALAGAY NG MGA MARKAHAN.

1. Paunang daloy f(i,j) = 0.
Magtalaga tayo ng mga label sa mga vertex ng network na ito na magkakaroon ng form (i+, ε) o
(i - , ε). Markahan natin ang pinagmulan (-, ∞), mga . ε(s)= ∞.

2. Para sa anumang may markang vertex i piliin ang lahat ng walang label na vertex j para sa f(i,j) at magdagdag ng mga tala sa kanila (i+, ε(j)), saan ε(j)=min[ε(i), f(i,j)]. Yaong mga vertex na mananatiling walang marka, ngunit para saan f(i,j)>0, katangian ang tala (i-, ε(j)).

Ulitin namin ang operasyong ito hanggang sa mamarkahan ang alisan ng tubig. Kung ang daloy ay nananatiling walang label, kung gayon ang daloy na natagpuan ay pinakamataas, at ang hanay ng mga arko na nagkokonekta sa mga may markang vertice na may mga hindi namarkahan ay bumubuo ng isang minimal na hiwa.

3. Hayaang may label ang stock (j+, ε(t)), Pagkatapos f(j,t) palitan ng f(j,t)+ε(t). Kung ang stock ay minarkahan (j-, ε(t)), Iyon f(j,t) palitan ng f(j,t)-ε(t). Punta tayo sa taas j. Kung j may marka (i+, ε(j)), pagkatapos ay papalitan namin f(i,j) sa f(i,j)+ε(t), at kung (i-, ε(j)), f(j,i) palitan ng f(j,i)-ε(t). Punta tayo sa taas i. Ulitin namin ang operasyong ito hanggang sa maabot namin ang pinagmulan s. Hihinto ang pagbabago ng daloy, mabubura ang lahat ng marka at pumunta sa hakbang 2

HALIMBAWA 3.14.

M 4 K

1 hakbang A → (-, ∞) M → (A+,8) P → (A+,3) K → (P+,3) T → (P+,3) B → (T+,3) f(T,B)=3 f(P,T)=3 f(A,P)=3 f(P,K)=0 f(A,M)=0 f(M,P)=0 f(M,K)=0 f(M,T)=0 f(K,T)=0 f( K,B)=0
Hakbang 2 A → (-, ∞) M → (A+,8) P → (M+,1) K → (M+,4) T → (M+,2) f(K,B)=3 f(M,K)=3 f(A,M)=3 f(T,B)=3 f(P,T)=3 f(A,P)=3 f(P,K)=0 f(M,T)=0 f(M,P)=0 f(K,T)=0
Hakbang 3 A → (-, ∞) M → (A+,5) P → (M+,1) K → (M+,1) T → (M+,2) B → (T+,2) f(T,B)=5 f(M,T)=2 f(A,M)=5 f(K,B)=3 f(M,K)=3 f(P,T)=3 f(A,P)=3 f(P,K)=0 f(M,P)=0 f(K,T)=0
Hakbang 4 A → (-, ∞) M → (A+,3) P → (M+,1) K → (M+,1) T → (P+,1) B → (T+,1) f(A,M)=6 f(T,B)=6 f(P,T)=4 f(M,P)=1 f(M,T)=2 f(K,B)=3 f(M,K)=3 f(A,P)=3 f(P,K)=0 f(K,T)=0
Hakbang 5 A → (-, ∞) M → (A+,2) P → (M-,1) K → (M+,1) T → (K+,1) B → (T+,1) f(A,M)=7 f(M,K)=4 f(K,T)=1 f(T,B)=7 f(P,T)=4 f(M,P)=1 f( M,T)=2 f(K,B)=3 f(A,P)=3 f(P,K)=0
Hakbang 6 A → (-, ∞) M → (A+,1) Ang daloy ay pinakamainam f=10 Minimum na hiwa: MT-MR-MSA

GAWAIN. Hanapin ang pinakamataas na daloy sa network

ALGORITHM

Tukuyin natin ang vertex s= x 0 . Lahat ng iba ay x i.

Stage 1.

1. Pumili ng anumang landas na ang lahat ng mga arko ay hindi puspos.

2. Pinapataas namin ang dami ng daloy sa landas na ito ng isa hanggang sa walang puspos na arko dito.

Ipinagpapatuloy namin ang proseso ng pagtaas ng daloy hanggang sa mabuo ang buong daloy, i.e. anumang landas ay maglalaman ng hindi bababa sa isang saturated arc.

Stage 2.

2. Kung ang х i ay isa nang may markang vertex, minarkahan namin ang (+i) lahat ng walang label na vertices kung saan napupunta ang unsaturated arcs mula sa х i, at kasama ang index (–i) lahat ng unmarked vertices kung saan napupunta ang mga arc na may non-zero flow. sa х i.

3. Kung bilang resulta ng prosesong ito ay minarkahan ang isang vertex t, pagkatapos ay sa pagitan s At t mayroong isang landas na ang lahat ng mga vertice ay minarkahan ng mga numero ng nakaraang mga vertex. Pinapataas namin ang daloy sa lahat ng mga arko ng landas na ito ng isa kung, kapag lumilipat mula s Upang t ang oryentasyon ng arko ay tumutugma sa direksyon ng paggalaw, at nababawasan ng isa kung ang arko ay may kabaligtaran na oryentasyon. Lumipat tayo sa hakbang 1.

4. Kapag ang tuktok t imposibleng markahan na ang proseso ay natapos na at ang resultang daloy ay ang pinakamalaking daloy ng network.

TANDAAN. Maaari kang pumunta sa yugto 2 nang hindi kinukumpleto ang unang yugto (tingnan ang halimbawa 3.16).

HALIMBAWA 3.15.

9

SOLUSYON:

Ang isang kumpletong daloy ay natagpuan sa isang partikular na network ng transportasyon. Ang mga saturated arc ay naka-highlight

Sa network na ito, maaari mo ring markahan ang huling vertex, at ang resulta ng pagmamarka ay magiging pareho. Sa pamamagitan ng pagpapalit ng daloy, nakakakuha tayo ng isang network kung saan imposibleng markahan ang huling vertex, kaya ang daloy sa loob nito ang pinakamalaki at katumbas ng 10.

HALIMBAWA 3.16.

8 2 1

May nakitang hindi kumpletong daloy sa isang partikular na network ng transportasyon

Markahan natin ang network at dagdagan ang daloy dito ayon sa algorithm. Nakukuha namin

Sa network na ito, maaari mo ring markahan ang huling vertex, at ang resulta ng pagmamarka ay magiging pareho. Sa pamamagitan ng pagbabago ng daloy, nakakakuha tayo ng isang network kung saan imposibleng markahan ang huling vertex, kaya ang daloy sa loob nito ay ang pinakamalaki at katumbas ng 6.

Seksyon IV. DYNAMIC PROGRAMMING.

Dynamic na programming ay ginagamit upang mahanap ang pinakamainam na multi-stage na solusyon. Halimbawa, pangmatagalang pagpaplano para sa pagpapalit ng kagamitan; aktibidad ng industriya sa loob ng ilang taon. Ginagamit nito ang prinsipyo ng optimality, ayon sa kung saan ang anumang bagong bahagyang solusyon ay dapat na pinakamainam na nauugnay sa nakamit na estado.

Mas mahusay na malutas ang isa nang maraming beses simpleng gawain kaysa minsan kumplikado.

PROBLEMA 1. Tungkol sa pinakakapaki-pakinabang na ruta sa pagitan ng dalawang punto.

Kinakailangan na bumuo ng isang landas na nagkokonekta sa dalawang puntong A at B, kung saan ang pangalawa ay nasa hilagang-silangan ng una. Para sa pagiging simple, sabihin natin na ang paglalagay ng isang landas ay binubuo ng isang serye ng mga hakbang, at sa bawat hakbang ay maaari tayong lumipat sa alinman sa hilaga o dahil sa silangan. Kung gayon ang anumang landas ay isang stepped broken line, ang mga segment na kung saan ay parallel sa isa sa mga coordinate axes. Ang mga gastos sa paggawa ng bawat isa sa mga seksyong ito ay kilala.

HALIMBAWA 4.1. Hanapin ang pinakamababang landas mula A hanggang B.


Ang huling hakbang ay upang makamit ang T.V. Bago ang huling hakbang, maaari tayong makarating sa mga punto kung saan maaari nating maabot ang T.V. sa isang hakbang. Mayroong dalawang ganoong mga punto (ang sistema ay maaaring nasa isa sa dalawang estado). Para sa bawat isa sa kanila, mayroon lamang isang pagpipilian upang maabot ang t.V: para sa isa - lumipat sa silangan; para sa isa pa - sa hilaga. Isulat natin ang mga gastos 4 at 3 sa bawat kaso.

4

Ngayon, i-optimize natin ang penultimate na hakbang. Pagkatapos ng nakaraang hakbang, maaari tayong mapunta sa isa sa tatlong puntos: C 1, C 2, C 3.

Para sa punto C 1, mayroon lamang isang kontrol (markahan natin ito ng isang arrow) - lumipat sa silangan, at ang mga gastos ay magiging 2 (sa hakbang na ito) + 4 (sa susunod na hakbang) = 6. Katulad nito, para sa item C 3 ang mga gastos ay magiging 2+3=5. Para sa t.C 2 mayroong dalawang kontrol: pumunta sa silangan o hilaga. Sa unang kaso, ang mga gastos ay magiging 3+3=6, at sa pangalawang kaso – 1+4=5. Nangangahulugan ito na ang kondisyon na pinakamainam na kontrol ay pumunta sa hilaga. Markahan natin ito ng isang arrow at ilagay ang kaukulang mga gastos.

2 4

GAWAIN 2. Tungkol sa pagkarga ng sasakyan (tungkol sa backpack).

Mayroong N item. Kilalang timbang a i at halaga φ i bawat aytem. Kinakailangan upang punan ang isang backpack na may kakayahang humawak ng ≤ timbang R , tulad ng isang hanay ng mga item na magkakaroon ng pinakamalaking halaga.

Ang proseso ng pag-load ng backpack ay maaaring nahahati sa N hakbang. Sa bawat hakbang ay nagpapasya kami sa tanong: kunin ang item na ito o hindi kunin ito? Sa bawat hakbang ay mayroon lamang 2 mga kontrol: kontrol = 1, kung kukunin natin ang item na ito; at 0 - kung hindi natin ito kukunin.

Ang estado ng system bago ang susunod na hakbang ay nailalarawan sa timbang S, na nananatili pa rin sa aming pagtatapon hanggang sa katapusan ng buong paglo-load pagkatapos makumpleto ang mga nakaraang hakbang (na-load na ang ilang mga item), i.e. ang dami ng libreng espasyo sa backpack.

ALGORITHM.

1. Magsimula tayo sa huling hakbang. Gumawa tayo ng iba't ibang mga pagpapalagay tungkol sa libreng espasyo sa backpack: S=0.1,…R. Ilagay natin ang huling bagay sa backpack kung mayroon itong sapat na espasyo sa imbakan.

2. Sa bawat nakaraang hakbang, para sa lahat ng posibleng estado S, isinasaalang-alang namin ang 2 opsyon: kunin o hindi kunin ang bagay. Hanapin natin ang pakinabang sa bawat kaso bilang kabuuan ng mga nadagdag sa kasalukuyang hakbang at sa susunod na na-optimize na hakbang. Ilalagay namin ang mga resulta sa auxiliary table.

3. Sa unang hakbang, isinasaalang-alang namin ang tanging posibleng estado S=R.

4. Maghanap tayo ng solusyon sa pamamagitan ng "paglipat pabalik", i.e. Ang pagkuha ng pinakamainam na kontrol sa unang hakbang, binabago namin ang estado ng system sa ikalawang hakbang: S=R– x 1 a 1 at piliin ang pinakamainam na kontrol x 2 para sa estadong ito. atbp.

HALIMBAWA 4.2.

Paunang data

P1 P2 P3 P4
timbang a i
gastosj i

Pangunahing mesa

S i=4 i=3 i=2 i=1
x 4 W 4 x 3 W 3 x 2 W 2 x 1 W 1

Auxiliary table.

estado x A S- A j i (x) W i+1 (S- A) j i (x)+ W i+1 (S- A)
i=3 S=5
S=6
S=7
S=8
S=9
S=10
i=2 S=5
S=6
S=7
S=8
S=9
S=10
i=1 S=10

Sagot: x 4 =0; x 3 =1; x 2 =0; x 1 =1; W=15

GAWAIN 3. Sa pamamahagi ng mga mapagkukunan.

Mayroong N mga negosyo P 1, P 2,… P N, bawat isa ay bumubuo ng kita φ k (x) kung ito ay inilalaan ng mapagkukunan sa halagang x. Kinakailangang ipamahagi ang magagamit na mapagkukunan sa dami A sa pagitan ng mga bagay upang ang kabuuang kita ay pinakamataas.

Hayaang ang x k ay ang halaga ng mapagkukunang inilaan sa kth enterprise. Pagkatapos ang problemang isinasaalang-alang ay nabawasan sa karaniwang problema linear programming.

Bumalangkas tayo ng problema bilang isang dynamic na problema sa programming.

Para sa unang hakbang ay kukuha kami ng pamumuhunan ng mga pondo sa enterprise P 1, para sa pangalawa - sa P 2, atbp. Pinamamahalaang sistema sa sa kasong ito- mga pondo na ibinahagi. Ang estado ng system bago ang bawat hakbang ay nailalarawan sa pamamagitan ng isang parameter - ang magagamit na stock ng mga pondo na hindi pa namuhunan. Sa problemang ito, ang mga hakbang na kontrol ay ang mga pondong inilalaan sa mga negosyo. Kinakailangang hanapin ang pinakamainam na kontrol (x 1, x 2,...x N), kung saan ang kabuuang kita ay pinakamataas:

1,1 0,5
S=3 0,1 0,5 1,1 1,5
S=4 0,1 0,5 2,1 1,5
S=5 0,1 0,5 2,5 3,1 2,5 2,5
i=1 S=5 0,5 1,5 3,1 1,1 3,1 3,5 2,1 2,6

Sagot: x 1 =1; x 3 =0; x 3 =4; W=3.5

GENERALIZED ALGORITHM

1. Ilarawan ang sistema. Iyon ay, alamin kung anong mga parameter ang nagpapakilala sa estado ng kinokontrol na sistema bago ang bawat hakbang. Mahalagang maitakda nang tama at "mahinhin" ang gawain, nang hindi pinapabigat ito ng mga hindi kinakailangang detalye, na pinapasimple ang paglalarawan ng kinokontrol na sistema hangga't maaari.

2. Hatiin ang operasyon sa mga hakbang (mga yugto). Ang lahat ng makatwirang paghihigpit na ipinataw sa pamamahala ay dapat isaalang-alang dito. Ang hakbang ay dapat sapat na maliit upang ang pamamaraan ng pag-optimize ng kontrol sa hakbang ay medyo simple; at ang hakbang, sa parehong oras, ay hindi dapat masyadong maliit upang hindi gumawa ng mga hindi kinakailangang kalkulasyon na nagpapalubha sa pamamaraan para sa paghahanap ng pinakamainam na solusyon, ngunit hindi humantong sa isang makabuluhang pagbabago sa pinakamabuting kalagayan layunin function.

3. Alamin ang hanay ng mga hakbang na kontrol x i para sa bawat hakbang at ang mga paghihigpit na ipinataw sa kanila.

4. Tukuyin kung ano ang nakuha ng kontrol x i na dinadala sa i-step, kung bago iyon ang sistema ay nasa estado S, i.e. isulat ang mga function ng kabayaran:

w i =f i (S, x i)

5. Tukuyin kung paano nagbabago ang estado ng sistema sa ilalim ng impluwensya ng kontrol x i sa 1st step, ibig sabihin. isulat ang mga function ng pagbabago ng estado.

S / =φ i (S, x i)

6. Isulat ang pangunahing paulit-ulit na dynamic programming equation, na nagpapahayag ng conditional optimal gain sa pamamagitan ng isang kilalang function

W i (S)= max(f i (S, x i)+W i+1 (φ i (S, x i)))

7. Gumawa kondisyonal na pag-optimize ang huling hakbang, na gumagawa ng iba't ibang mga pagpapalagay tungkol sa kung paano natapos ang penultimate na hakbang, at para sa bawat isa sa mga pagpapalagay na ito, hanapin ang kondisyon (pinili batay sa kondisyon na ang hakbang ay natapos sa isang bagay) na pinakamainam na kontrol sa huling hakbang.

W m (S)= max(f m (S, x m))

8. Magsagawa ng conditional optimization, simula sa penultimate step at nagtatapos sa unang hakbang (backing back).

9. Gumawa walang kondisyong pag-optimize kontrol, "pagbabasa" ng kaukulang mga rekomendasyon sa bawat hakbang: kunin ang nahanap na pinakamainam na kontrol sa unang hakbang at baguhin ang estado ng system, para sa nahanap na estado mahanap ang pinakamainam na kontrol sa pangalawang hakbang, atbp. hanggang sa huling hakbang.

PRINSIPYO NG OPTIMALIDAD. Anuman ang estado ng system bago ang susunod na hakbang, kinakailangang pumili ng kontrol sa hakbang na ito upang ang pakinabang sa hakbang na ito kasama ang pinakamainam na pakinabang sa lahat ng kasunod na hakbang ay pinakamataas.

Ang prinsipyo ng dynamic na programming ay hindi nagpapahiwatig na ang bawat hakbang ay na-optimize nang hiwalay, nang hiwalay sa iba. Ano ang punto ng pagpili ng isang kontrol na ang pagiging epektibo ay pinakamataas sa isang partikular na hakbang, kung ang hakbang na ito ay mag-aalis sa atin ng pagkakataong manalo nang maayos sa mga susunod na hakbang?

Sa pagsasagawa, may mga kaso kapag ang isang operasyon ay kailangang planuhin para sa isang walang katiyakang mahabang panahon. Ang modelo para sa naturang kaso ay isang walang katapusang hakbang na kinokontrol na proseso, kung saan ang lahat ng mga hakbang ay pantay. Dito ang panalong function at ang state change function ay hindi nakadepende sa step number.

Seksyon V. PAGMOMODEL NG SIMULASYON

Ang ideya ng algorithm na ito ay upang makahanap ng mga end-to-end na landas na may positibong daloy mula sa pinagmulan hanggang sa lababo.

Isaalang-alang ang isang gilid (i, j) na may (paunang) kapasidad. Sa panahon ng pagpapatupad ng algorithm, ang mga bahagi ng kapasidad na ito ay "tinatanggal" ng mga daloy na dumadaan sa isang naibigay na gilid, bilang isang resulta, ang bawat gilid ay magkakaroon ng natitirang kapasidad. Sumulat - natitirang bandwidth. Ang isang network kung saan ang lahat ng mga gilid ay may natitirang kapasidad ay tatawaging tira.

Para sa isang arbitrary na node j na tumatanggap ng daloy mula sa node i, tinukoy namin ang isang label, kung saan ang halaga ng daloy na dumadaloy mula sa node j hanggang sa node i. Upang mahanap ang maximum na daloy, ginagawa namin ang mga sumusunod na hakbang.

Para sa lahat ng mga gilid, itinakda namin ang natitirang kapasidad na katumbas ng paunang kapasidad, i.e. equate natin =. Italaga at markahan natin ang node 1 ng label. Ipinapalagay namin na i=1.

Ang hanay ng mga node j kung saan maaari kang pumunta mula sa node I kasama ang isang gilid na may positibong natitirang kapasidad >0 para sa lahat ng j. Kung, isinasagawa namin ang yugto 3, kung hindi man ay pupunta kami sa 4.

Sa nakita namin node k tulad na. Ilagay natin at markahan ang node k na may label. Kung k=n, may makikitang end-to-end na landas at pupunta tayo sa stage 5, kung hindi, itatakda natin ang i=k at babalik sa stage 2.

Rollback. Kung i=1, walang end-to-end na landas ang posible, at pumunta sa 6. Kung, makikita natin ang may label na node r kaagad na nauuna sa node i at alisin ito mula sa hanay ng mga node na katabi ng node r. Itinakda namin ang i=r at bumalik sa stage 2.

Kahulugan ng isang natitirang network. Tukuyin natin sa pamamagitan ng hanay ng mga node kung saan natagpuan ng p_th ang end-to-end na landas mula sa source node (node ​​1) hanggang sa sink node (node ​​​​n) pagkatapos ay dumaan ang maximum na daloy sa landas na ito

Ang natitirang kapasidad ng mga gilid na bumubuo sa end-to-end na landas ay bumababa ng isang halaga sa direksyon ng daloy at tumataas ng parehong halaga sa kabaligtaran na direksyon.

yun. para sa isang gilid (i, j) na kasama sa isang end-to-end na landas, nagbabago ang kasalukuyang mga natitirang kapasidad:

1) kung ang daloy ay napupunta mula sa node i hanggang j,

2) kung ang daloy ay napupunta mula sa node j hanggang sa i.

a) na may m nahanap na mga end-to-end na landas, ang maximum na daloy ay ipinahayag ng

b) Ang pagkakaroon ng mga halaga ng paunang at panghuling mga kapasidad ng gilid (i, j), maaari naming kalkulahin ang pinakamainam na daloy sa gilid na ito tulad ng sumusunod. Ilagay natin. Kung >0, ang daloy na dumadaan sa gilid (i, j) ay pantay. Kung >0, pantay ang daloy. (ang kaso kapag ang parehong >0 at >0 ay imposible).

Halimbawa 1. Hanapin ang pinakamataas na daloy sa network Fig. 1

Pag-ulit 1. =

3) k=3, dahil. Nagtatalaga at minarkahan namin ang node 3 na may label. i=3 at bumalik sa 2)

5) k=5 at. Minarkahan namin ang node 5 na may label. Kumuha kami ng isang through path.

6) tinutukoy namin ang end-to-end na path sa pamamagitan ng mga label, simula sa node 5 at nagtatapos sa node 1: . At. Kinakalkula namin ang mga natitirang kapasidad sa landas:

Pag-ulit 2.

1) at markahan ang node 1 na may label. i=1

2") (kaya hindi kasama ang node 5 sa

3") k=4, at markahan ang node 4 na may label. i=4 at bumalik sa 2)

2""") (dahil ang mga node 1 at 3 ay minarkahan, hindi sila kasama sa)

3""") k=5 at. Minarkahan namin ng label ang node 5. May nakuhang end-to-end na path. Pumunta sa 5)

Pag-ulit 3.

1) at markahan ang node 1 na may label. i=1

3) k=2, at markahan ang node 2 na may label. i=2 at bumalik sa 2)

3") k=3 at. Markahan ang node 3 ng label. i=3 at bumalik sa 2)

2") (mula) pumunta sa 4)

4) ang label ng node 3 ay nagpapakita ng bilang ng nakaraang node. Sa pag-ulit na ito, ang node 3 ay hindi isinasaalang-alang sa hinaharap; at bumalik sa 2)

2""") (dahil ang node 3 ay tinanggal mula sa posibleng end-to-end na landas)

3""") at. Minarkahan namin ng label ang node 5. May nakuhang end-to-end path. Pumunta sa 5)

5) i. Kinakalkula namin ang mga natitirang kapasidad sa landas:

Pag-ulit 4. Sa pag-ulit na ito, ang landas na may

Pag-ulit 5. Sa pag-ulit na ito, ang landas na may

Pag-ulit 6: Walang posibleng mga bagong end-to-end na path dahil ang lahat ng mga gilid na nagmula sa node 1 ay may zero na natitirang kapasidad. Pumunta sa 6) upang matukoy ang solusyon

6) ang maximum na dami ng daloy sa network ay katumbas ng mga yunit.

Ang mga halaga ng daloy sa iba't ibang mga gilid ay kinakalkula sa pamamagitan ng pagbabawas ng pinakabagong mga natitirang halaga ng kapasidad mula sa mga paunang halaga ng kapasidad.

Mga resulta ng pagkalkula: talahanayan. 1

Dami ng daloy

direksyon

(20,0) - (0,20)=(20, - 20)

(30,0) - (0,30)=(30, - 30)

(10,0) - (0,10)=(10, - 10)

(40,0) - (40,0)=(0,0)

(30,0) - (10,20)=(20, - 20)

(10,5) - (0,15)=(10, - 10)

(20,0) - (0,20)=(20, - 20)

(20,0) - (0,20)=(20, - 20)

Graphical sequential execution ng algorithm para sa paghahanap ng maximum flow (halimbawa 1)







e) f) Walang mga through path


kanin.

Paunang data sa sistema ng transportasyon, halimbawa, in-plant, na ipinapakita sa Fig. 2, ay maaari ding tukuyin ng isang talahanayan (Talahanayan 2).

Talahanayan 2. Paunang data para sa maximum na problema sa daloy

Malinaw, ang maximum na kapasidad ng sistema ng transportasyon ay hindi lalampas sa 6, dahil hindi hihigit sa 6 na yunit ng kargamento ang maaaring ipadala mula sa panimulang punto 0, ibig sabihin, 2 mga yunit sa punto 1, 3 mga yunit sa punto 2 at 1 yunit sa punto 3 . Susunod, kinakailangan upang matiyak na ang lahat ng 6 na yunit ng kargamento na umaalis sa punto 0 ay umabot sa huling punto 4. Malinaw, ang 2 yunit ng kargamento na dumating sa punto 1 ay maaaring direktang ipadala sa punto 4. Ang kargamento na dumating sa punto 2 ay kailangang hatiin: 2 unit ay agad na ipinadala sa point 4, at 1 unit - sa intermediate point 3 (dahil sa limitadong kapasidad ng seksyon sa pagitan ng mga puntos 2 at 4). Ang sumusunod na kargamento ay naihatid sa punto 3: 1 yunit mula sa punto 0 at 1 yunit mula sa punto 3. Ipinapadala namin sila sa punto 4. Kaya, ang pinakamataas na throughput ng sistema ng transportasyon na pinag-uusapan ay 6 na yunit ng kargamento. Sa kasong ito, ang mga panloob na seksyon (mga sanga) sa pagitan ng mga punto 1 at 2, pati na rin sa pagitan ng mga punto 1 at 3, ay hindi ginagamit isang throughput ng 3 unit. Ang solusyon ay maaaring iharap sa anyo ng isang talahanayan (Talahanayan 3)

Talahanayan 3. Paglutas ng maximum na problema sa daloy

Punto ng pag-alis

Patutunguhan

Plano ng transportasyon

Bandwidth

Problema sa linear programming para sa pag-maximize ng daloy. Bumalangkas tayo ng pinakamataas na problema sa daloy sa mga tuntunin ng linear programming. Hayaang X KM ang dami ng transportasyon mula sa punto K hanggang sa punto M. Ayon sa Fig. 2 K = 0,1,2,3, M = 1,2,3,4, at ang transportasyon ay posible lamang sa puntong may mas mataas na numero. Nangangahulugan ito na mayroong kabuuang 9 na variable X KM, ibig sabihin, X 01, X 02, X 03, X 12, X 13, X 14, X 23, X 24, X 34. Ang problema sa linear programming na naglalayong i-maximize ang Ang daloy ay may anyo:

X 01 + X 02 + X 03 = F (0)

X 01 + X 12 + X 13 + X 14 = 0 (1)

X 02 - X 12 + X 23 + X 24 = 0 (2)

X 03 - X 13 - X 23 + X 34 = 0 (3)

X 14 - X 24 - X 34 = - F (4)

X KM? 0, K, M = 0, 1, 2, 3, 4

Dito ang F ay ang layunin na function, ang kondisyon (0) ay naglalarawan sa pagpasok ng mga kalakal sa sistema ng transportasyon. Ang mga kundisyon (1) - (3) ay nagtakda ng mga relasyon sa balanse para sa mga node 1-3 ng system. Sa madaling salita, para sa bawat panloob na node, ang papasok na daloy ng mga kalakal ay katumbas ng papalabas na daloy ng mga kalakal sa loob ng system at hindi "ipinanganak" dito. Ang kondisyon (4) ay ang kondisyon para sa "paglabas" ng mga load mula sa system. Kasama ng kundisyon (0), ito ay bumubuo ng balanseng relasyon para sa sistema sa kabuuan ("input" ay katumbas ng "output"). Ang sumusunod na siyam na hindi pagkakapantay-pantay ay nagtakda ng mga paghihigpit sa kapasidad ng mga indibidwal na "sangay" ng sistema ng transportasyon. Pagkatapos ay ipinahiwatig ang hindi negatibong dami ng trapiko at ang layunin na pag-andar. Malinaw na ang huling hindi pagkakapantay-pantay ay sumusunod mula sa anyo ng layunin ng function (relasyon (0) o (4)) at ang hindi negatibong dami ng trapiko. Gayunpaman, ang huling hindi pagkakapantay-pantay ay nagdadala ng ilan Pangkalahatang Impormasyon- alinman sa isang positibong dami ng kargamento ay maaaring maipasa sa system, o zero (halimbawa, kung mayroong paggalaw sa isang bilog sa loob ng system), ngunit hindi negatibo (hindi ito makatuwiran sa ekonomiya, ngunit pormal matematikal na modelo"hindi alam" tungkol dito).

Kapag pinaplano ang nakapangangatwiran na pamamahagi ng mga produkto sa network ng pamamahagi, kinakailangan na i-coordinate ang kapasidad ng channel sa mga pangangailangan ng mga customer at sa kapasidad ng planta ng produksyon. Ang klase ng mga problemang ito ay nalulutas sa pamamagitan ng paghahanap ng pinakamataas na daloy.

Isaalang-alang natin ang isang network ng pamamahagi (Larawan 4.21), kung saan ang mga puntos ay 0 (pasukan, halimbawa, bodega ng isang tagagawa ng mga natapos na produkto) at P (exit, distribution centers, warehouses ng wholesale at retail organizations, consumer) at bawat arc (segment) connecting point i At j, ang numero dij > 0 ay nauugnay, tinatawag throughput mga arko. Ang halaga ng throughput ay nagpapakilala sa maximum pinahihintulutang dami daloy ng materyal na maaaring dumaan sa katumbas na arko bawat yunit ng oras.

kanin. 4.21.

Ang dami ng mga produkto na dumadaan sa isang arko mula sa i dati j , tatawagin natin itong daloy sa isang arko ( i ,j ) at tinutukoy ng . Obvious naman yun

Kung isasaalang-alang namin na ang buong daloy ng materyal na pumapasok sa intermediate point ng network ay dapat na ganap na lumabas dito, nakukuha namin

Mula sa natural na pangangailangan ng pagkakapantay-pantay ng mga daloy sa input at output na mayroon tayo

Tatawagin namin ang halaga ng Z bilang halaga ng daloy sa network at ipoposisyon ang problema ng pag-maximize ng Z na napapailalim sa mga kundisyon sa itaas.

Ang paghahanap ng maximum na daloy ay bumababa sa paghahanap ng throughput ng minimum na hiwa.

Isaalang-alang natin ang isang pangkalahatang algorithm ng paghahanap sa anyo ng matrix.

Ang unang yugto ng algorithm ay binubuo ng pagbuo ng isang matrix D 0, kung saan ipinasok ang mga halaga ng throughput (para sa isang hindi naka-orient na arko ay kinukuha namin ang mga simetriko na halaga ng mga elemento ng matrix).

Ang mga pangunahing hakbang ng algorithm ay ang paghahanap ng isang tiyak na landas at itama ang daloy sa landas na ito.

Kapag naghahanap ng landas, gumagamit kami ng proseso ng pagmamarka. Minarkahan namin ng simbolo * ang zero row at column ng matrix (network input). Sa 0th line na hinahanap namin , markahan ang kaukulang mga column na may mga indeks

at ilipat ang mga label ng column sa mga row. Pagkatapos ay kunin namin ang ith na may markang hilera, maghanap ng isang hindi namarkahang column dito na may , kung saan kami ay tumutugma sa mga label ng index

Inilipat namin ang mga label ng column sa mga row, at ipagpatuloy ang prosesong ito hanggang sa mamarkahan ang ika-n column.

tapos" sa kabaligtaran"gamit ang mga indeks, nalaman natin ang landas na humantong sa η-th vertex, bawasan ang kapasidad ng mga arko ng landas (mga elemento ng matrix) sa pamamagitan ng V n at dagdagan ang mga simetriko na elemento ng parehong halaga.

Ang pamamaraang ito ay nagpapatuloy hanggang sa pagmamarka n -itaas ay hindi magiging imposible.

Ang maximum na pagkilos ng bagay ay matatagpuan sa pamamagitan ng pagbabawas mula sa orihinal na matrix D 0, nakuha pagkatapos ng pagwawasto sa itaas ng capacity matrix:

Halimbawa 4.4

Ang produksyon ay matatagpuan sa Moscow. Upang ipamahagi ang mga produkto, ang kumpanya ay umaakit ng mga tagapamagitan na nagtatrabaho sa kumpanya sa pamamagitan ng mga sentro ng pamamahagi sa iba't ibang antas. Sa European na bahagi ng Russia mayroong isang pakyawan na negosyo 1, na sineserbisyuhan ng isang sentral na sentro ng pamamahagi. Ang pakyawan na negosyo 2 ay nagpapatakbo sa malapit sa ibang bansa (Ukraine, Belarus) at sineserbisyuhan ng isang sentro ng pamamahagi ng rehiyon. Ang kumpanya ay may sariling mga kliyente sa lokal na merkado (Moscow at Moscow rehiyon) - mga nagtitingi na tumatanggap ng mga produkto mula sa sentro ng pamamahagi ng lungsod. Ang mga sentro ng pamamahagi ng rehiyon at lungsod ay nire-restock mula sa sentro ng pamamahagi.

I-highlight natin ang isang fragment ng distribution network:

  • bodega ng mga natapos na produkto ng isang manufacturing enterprise;
  • sentro ng pamamahagi;
  • sentro ng pamamahagi ng rehiyon;
  • sentro ng pamamahagi ng lungsod;
  • dalawang pakyawan na negosyo;
  • retail outlet na pag-aari ng kumpanya;
  • mga mamimili.

kanin. 4.22.

Italaga natin ang bawat link ng distribution network na may numero, at ilagay ang kapasidad sa itaas ng mga arko. Ang kapasidad ng throughput, depende sa uri ng link, ay maaaring ipahayag sa mga tuntunin ng dami ng kapasidad ng produksyon, ang nakaplanong pangangailangan (demand) ng mga mamimili at kapasidad ng merkado.

Ang graph ng network ng pamamahagi ng produkto ay ipinapakita sa Fig. 4.23. Bumuo tayo ng matrix D 0, kung saan ipinasok namin ang mga halaga ng mga kapasidad ng throughput ng mga link sa network ng pamamahagi (Larawan 4.24).

kanin. 4.23.

kanin. 4.24.

Mula sa zero row ay minarkahan namin ang vertices (rows-column) 1, 2 at 3 na may mga indeks μ = 0 at V, katumbas ng 30.10 at 10.

Mula sa minarkahang linya 1, markahan ang mga vertice 4 at 5 na may mga indeks na μ = 1 at V4 = min (30,15) = 15, V5 = min (30,10) = 10.

Mula sa linya 3 minarkahan namin ang vertex 6 at, sa wakas, mula sa linya 4 - vertex 7 (Fig. 4.25).

kanin. 4.25.

Sa pamamagitan ng pagbabalik sa kahabaan ng μ makikita natin ang landas: sa vertex 7 mula sa 4, sa vertex 4 mula sa 1, sa vertex 1 mula sa 0; pag-aayos ng mga elemento D 0 bawat halaga ng daloy V7 = 15.

Ang susunod na hakbang ay nagbibigay ng landas na may daloy 5 (Larawan 4.26).

kanin. 4.26.

Ang susunod na hakbang ay nagbibigay ng resulta na ipinapakita sa Fig. 4.27.

kanin. 4.27.

Walang karagdagang pagmamarka ang posible. Mula dito nakuha namin ang maximum na flow matrix (Larawan 4.28).

kanin. 4.28.

Bilang resulta ng paglalapat ng algorithm para sa paghahanap ng pinakamataas na daloy sa network, ang mga resulta na ipinakita sa Fig. 4.29. Ang mga pares ng mga numero sa mga bracket na ipinapakita sa mga arko ng graph ay nagpapahiwatig ng maximum na throughput ng arko at ang inirerekomendang dami ng mga kalakal na ibinibigay sa network.

Sum of flows through arcs incident v, ay katumbas ng kabuuan ng mga daloy sa pamamagitan ng insidente ng arko w; ang kabuuan na ito ay tinatawag na halaga ng flux. Pangunahing magiging interesado tayo sa mga daloy na may pinakamalaking posibleng magnitude - ang tinatawag na pinakamataas na daloy. SA pangkalahatang kaso ang isang network ay maaaring magkaroon ng maraming iba't ibang mga maximum na daloy, ngunit ang kanilang mga halaga ay dapat na pareho. (4)

Ang pag-aaral ng pinakamataas na daloy sa pamamagitan ng isang network N = (V,D,a) ay malapit na nauugnay sa konsepto ng isang hiwa, i.e. tulad ng isang set A ng mga arko ng isang digraph D na may ari-arian na anumang simpleng chain ng v V dumadaan sa arko na kabilang sa A. Ang kapasidad ng isang hiwa ay ang kabuuan ng mga kapasidad ng mga arko na kabilang dito. Ang mga pagbawas na may pinakamaliit na posibleng throughput ay tinatawag na minimal cut.

Ang magnitude ng anumang daloy ay hindi lalampas sa throughput capacity ng anumang cut, at, samakatuwid, ang magnitude ng anumang maximum na daloy ay hindi lalampas sa throughput ng anumang minimum na hiwa. Gayunpaman, hindi agad malinaw na ang dalawa huling mga numero laging pantay sa isa't isa; Ang resultang ito ay nakuha ng mga Amerikanong mathematician na sina Ford at Fulkerson noong 1955 at tinawag na maximum flow at minimum cut theorem.

Theorem (tungkol sa maximum flow at minimum cut). Sa anumang network, ang laki ng anumang maximum na daloy ay katumbas ng kapasidad ng anumang minimum na hiwa.

Ang maximum flow at minimum cut theorem ay nagbibigay-daan sa iyo upang suriin kung ang isang naibigay na daloy ay maximum o hindi, ngunit para lamang sa medyo simpleng mga network. Siyempre, sa pagsasanay kailangan nating harapin ang malaki at kumplikadong mga network, at sa pangkalahatan ay mahirap hanapin ang maximum na daloy sa pamamagitan ng simpleng pagpili. Ilarawan natin ang isang algorithm para sa paghahanap ng maximum na daloy sa anumang network na may integer throughput.

Hakbang 1. Una, pumili tayo ng isang daloy na may hindi zero na halaga (kung may ganoong daloy). Halimbawa, kung ang N ay ang network na ipinapakita sa Fig. 29.3, pagkatapos ay ang daloy na ipinapakita sa Fig. 29.4. Kapansin-pansin na mas malaki ang halaga ng paunang daloy na aming pinili, mas madali ang mga susunod na hakbang.

Hakbang 2. Batay sa N, bumuo kami ng bagong network na N’ sa pamamagitan ng pagbabago ng direksyon ng daloy sa kabaligtaran. Mas tiyak, anumang arko a kung saan ang (a) = 0 ay nananatili sa N' kasama ang orihinal na kapasidad nito, at anumang arko a kung saan , ay pinapalitan ng isang arko a na may kapasidad at isang kabaligtaran na arko na may kapasidad (a). Ang Network N' sa aming halimbawa ay ipinapakita sa Fig. 29.5. Vertex v ay hindi na pinagmumulan, kundi isang lababo.

Hakbang 3. Kung sa network N’ makakahanap tayo ng non-zero flow mula sa v c, pagkatapos ay maaari itong idagdag sa orihinal na daloy at makakuha ng bagong daloy ng mas malaking halaga sa N. Ngayon ay maaari mong ulitin ang hakbang 2, gamit ang bagong thread na N' sa halip na N' kapag gumagawa ng network. Sa pamamagitan ng pag-uulit ng pamamaraang ito, sa kalaunan ay makakarating tayo sa isang network na N' na naglalaman ng walang mga di-zero na daloy; kung gayon ang katumbas na daloy ay ang pinakamataas na daloy. Halimbawa, sa Fig. 29.5 mayroong isang di-zero na daloy kung saan ang daloy sa pamamagitan ng mga arko ( v,u), (u,z), (z,x), (x,y) At ( y,) ay katumbas ng isa, at ang mga flux sa mga natitirang arko ay katumbas ng zero. Ang pagdaragdag ng daloy na ito sa daloy sa Fig. 29.4, nakuha namin ang daloy na ipinapakita sa Fig. 29.6; inuulit ang hakbang 2, madaling ipakita na ito ang pinakamataas na daloy.


Mga Ginamit na Aklat:

(1) http://pgap.chat.ru/zap/zap264.htm#0

(2) Asanov M.O., Baransky V.A., Rasin V.V. Discrete mathematics: mga matroid graph, algorithm

(3) Basaker R., Saati T. May hangganang mga graph at network.

(4) Wilson R. Panimula sa Teoryang Graph



Bago sa site

>

Pinaka sikat