Javító és majdnem javító utak

Hasonló dokumentumok
1. fejezet. Párosítások

Diszkrét matematika 2.C szakirány

SzA II. gyakorlat, szeptember 18.

Diszkrét matematika 2.C szakirány

Algoritmuselmélet. Gráfok megadása, szélességi bejárás, összefüggőség, párosítás. Katona Gyula Y.

Diszkrét matematika 1. estis képzés

Diszkrét matematika 2.

Diszkrét matematika 2. estis képzés

Diszkrét matematika 2. estis képzés

Diszkrét matematika 2.C szakirány

22. GRÁFOK ÁBRÁZOLÁSA

Diszkrét matematika 2.C szakirány

Feladatok, amelyek gráfokkal oldhatók meg 1) A königsbergi hidak problémája (Euler-féle probléma) a

Gráfok 2. Legrövidebb utak, feszítőfák. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

Gráfelméleti alapfogalmak

Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra:

Diszkrét Matematika MSc hallgatók számára 7. Előadás Párosítási tételek Előadó: Hajnal Péter Jegyzetelő: Kovácsházi Anna

Gráfelmélet. I. Előadás jegyzet (2010.szeptember 9.) 1.A gráf fogalma

Gráfelméleti feladatok. c f

Diszkrét matematika 2. estis képzés

Diszkrét matematika 2.

1. tétel - Gráfok alapfogalmai

Algoritmuselmélet. Mélységi keresés és alkalmazásai. Katona Gyula Y.

Algoritmusok bonyolultsága

GRÁFELMÉLET. 7. előadás. Javító utak, javító utak keresése, Edmonds-algoritmus

30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK

Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra:

5/1. tétel: Optimalis feszítőfák, Prim és Kruskal algorithmusa. Legrövidebb utak graphokban, negatív súlyú élek, Dijkstra és Bellman Ford algorithmus.

Diszkrét matematika 2. estis képzés

Algoritmuselmélet 11. előadás

Csima Judit október 24.

Adatszerkezetek 2. Dr. Iványi Péter

Algoritmuselmélet 7. előadás

A továbbiakban Y = {0, 1}, azaz minden szóhoz egy bináris sorozatot rendelünk

KOVÁCS BÉLA, MATEMATIKA I.

Algoritmuselmélet. Bonyolultságelmélet. Katona Gyula Y.

HAMILTON KÖR: minden csúcson PONTOSAN egyszer áthaladó kör. Forrás: (

Gráfelméleti alapfogalmak-1

Bonyolultságelmélet gyakorlat 06 Gráfos visszavezetések II.

Adatszerkezetek II. 2. előadás

Diszkrét matematika 2. estis képzés

Gráfok bejárása. Szlávi Péter, Zsakó László: Gráfok II :17

HAMILTON ÚT: minden csúcson PONTOSAN egyszer áthaladó út

KOVÁCS BÉLA, MATEMATIKA I.

KOMBINATORIKA ELŐADÁS osztatlan matematikatanár hallgatók számára

26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA

1. Az ábrán látható táblázat minden kis négyzete 1 cm oldalhosszúságú. A kis négyzetek határvonalait akarjuk lefedni. Meg lehet-e ezt tenni

Adatbázisok elmélete 12. előadás

OSZTHATÓSÁG. Osztók és többszörösök : a 3 többszörösei : a 4 többszörösei Ahol mindkét jel megtalálható a 12 többszöröseit találjuk.

Sali Attila Budapest Műszaki és Gazdaságtudományi Egyetem. I. B. 137/b március 16.

Az R halmazt a valós számok halmazának nevezzük, ha teljesíti az alábbi 3 axiómacsoport axiómáit.

EÖTVÖS LORÁND TUDOMÁNYEGYETEM TERMÉSZETTUDOMÁNYI KAR. Párosítások. BSc Szakdolgozat. Németh Kinga. Matematika BSc Elemző szakirány

10. előadás. Konvex halmazok

bármely másikra el lehessen jutni. A vállalat tudja, hogy tetszőlegesen adott

Megoldások 7. gyakorlat Síkgráfok, dualitás, gyenge izomorfia, Whitney-tételei

Elmaradó óra. Az F = (V,T) gráf minimális feszitőfája G-nek, ha. F feszitőfája G-nek, és. C(T) minimális

A 2015/2016. tanévi Országos Középiskolai Tanulmányi Verseny döntő forduló MATEMATIKA III. KATEGÓRIA (a speciális tanterv szerint haladó gimnazisták)

Gráfalgoritmusok ismétlés ősz

Diszkrét matematika 1. estis képzés

Számítógép hálózatok, osztott rendszerek 2009

Algoritmuselmélet. Függvények nagyságrendje, elágazás és korlátozás, dinamikus programozás. Katona Gyula Y.

Adatszerkezetek II. 1. előadás

Melykeres(G) for(u in V) {szin(u):=feher Apa(u):=0} for(u in V) {if szin(u)=feher then MBejar(u)}

III. Gráfok. 1. Irányítatlan gráfok:

Diszkrét matematika 2.C szakirány

Véges automaták, reguláris nyelvek

Hálózati folyamok. Tétel: A maximális folyam értéke megegyezik a minimális vágás értékével.

Az optimális megoldást adó algoritmusok

ELTE IK Esti képzés tavaszi félév. Tartalom

A zsebrádiótól Turán tételéig

6. Előadás. Megyesi László: Lineáris algebra, oldal. 6. előadás Bázis, dimenzió

C++ programozási nyelv

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 13.

Hadamard-mátrixok Előadó: Hajnal Péter február 23.

Ramsey-féle problémák

Gráfelméleti feladatok programozóknak

Gráfelmélet jegyzet 2. előadás

Számelmélet Megoldások

Diszkrét matematika II. gyakorlat

1: Bevezetés: Internet, rétegmodell Alapok: aszimptótika, gráfok. HálózatokII, 2007

1. ábra ábra

Algoritmusok bonyolultsága

3. Lineáris differenciálegyenletek

Országos Középiskolai Tanulmányi Verseny 2009/2010 Matematika I. kategória (SZAKKÖZÉPISKOLA) 2. forduló feladatainak megoldása

EGYSZERŰ, NEM IRÁNYÍTOTT (IRÁNYÍTATLAN) GRÁF

Programozási módszertan. Mohó algoritmusok

A számítástudomány alapjai

Gráfelmélet Megoldások

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI KÖZÉP SZINT Számelmélet

Online migrációs ütemezési modellek

7. Előadás. Megyesi László: Lineáris algebra, oldal. 7. előadás Elemi bázistranszformáció

Diszkrét Matematika GYAKORLAT, Levelező MSc hallgatók számára. 3. Feladatsor

Aromo Szöveges értékelés normál tantárggyal

Diszkrét matematika 2 (C) vizsgaanyag, 2012 tavasz

Egészrészes feladatok

Adatbázis és szoftverfejlesztés elmélet. Programozási tételek

Érdemes egy n*n-es táblázatban (sorok-lányok, oszlopok-fiúk) ábrázolni a két színnel, mely éleket húztuk be (pirossal, kékkel)

Gráfalgoritmusok és hatékony adatszerkezetek szemléltetése

A sorozat fogalma. függvényeket sorozatoknak nevezzük. Amennyiben az értékkészlet. az értékkészlet a komplex számok halmaza, akkor komplex

Átírás:

Javító és majdnem javító utak deficites Hall-tétel alapján elméletileg meghatározhatjuk, hogy egy G = (, ; E) páros gráfban mekkora a legnagyobb párosítás mérete. Ehhez azonban első ránézésre az összes X részhalmaz deficitjét meg kéne határozni, ami már = 20 csúcs esetén is 2 20 1000000 részhalmaz vizsgálatát jelentené. Ráadásul még ekkor sem volna konkrétan a kezünkben egy maximális párosítás. Ennél azonban ügyesebben is nekifoghatunk egy egyszerű, de hasznos észrevétel segítségével, amely ráadásul nem csak páros gráfokban használható. Definíció. Legyen G = (V ;E) egy tetszőleges gráf és P E egy párosítás. Egy út javító út P-re nézve, ha két P által fedetlen csúcsot köt össze, és minden második éle P-ben van. Megjegyzés. minden második éle P-ben van helyett azt is mondhattuk volna, hogy az élei felváltva P-n kívüliek, illetve P-beliek. Ugyanis ha minden második éle P-ben van, a köztes élek nem lehetnek P-ben, hiszen P párosítás. Állítás. Legyen G = (V ; E) egy tetszőleges gráf és P E egy párosítás. Ha van javító út P-re nézve, akkor van P-nél nagyobb párosítás. izonyítás. Módosítsuk P-t úgy, hogy a javító út P-beli elemeit kivesszük belőle, a P-n kívüli éleit pedig bevesszük P-be. z így kapott P élhalmaz párosítás lesz, hiszen egyik csúcsnál sem lehet két éle: a javító úton kívül nyilván nem, mert ott P és P megegyezik; a javító út két végpontját P nem fedte le, így nem romolhattak el; a javító út belső pontjaira pedig mind P-nek, mind P -nek egy-egy éle illeszkedik. Mivel a javító út P-n kívüli éllel indul és végződik, P = P + 1. 1 Párosítás növelése javító úttal egy páros gráfban. 1 1 2 2 2 C C C 4 D 4 D 4 D 5 E 5 E 5 E 6 F 6 F 6 Egy párosítás páros gráfban, egy javító út (1-C-4-E--) és a javítás eredménye. F Hamarosan látunk módszert arra, hogy hogyan lehet javító utakat keresni, és ezáltal növelni a párosításunk méretét. De vajon így biztosan találunk egy lehető legnagyobb párosítást? Vagy kifulladhat a módszer hamarabb is? következő tétel adja a megnyugtató választ. 1

2 Tétel. Legyen G = (V ; E) egy tetszőleges gráf és P E egy párosítás. Ha nincs javító út P-re nézve, akkor P egy legnagyobb párosítás. izonyítás. Legyen P egy tetszőleges párosítás. Jelölje S a P és P élhalmazok (súlyozott) unióját, melyben P P éleit kétszer vesszük be (mint párhuzamos éleket). zt fogjuk belátni, hogy P-nek legalább annyi éle van S-ben, mint P -nek, vagyis P P ; ez igazolja, hogy nincs P-nél nagyobb párosítás. z S élei által alkotott G S = (V ;S) gráfban minden csúcs foka legfeljebb kettő (miért is?), és a kettő fokú csúcsok egyik éle P-beli, a másik P -beli. G S összefüggőségi komponensei tehát párhuzamos élek, körök vagy utak (az esetleges izolált csúcsokat nulla hosszúságú utaknak tekintjük). körökben a P-beli és P -beli élek száma megegyezik, hiszen azok felváltva követik egymást; ugyanez fennáll a párhuzamos élek alkotta komponensekre is. z utakban nem lehet több P -beli él, mint P-beli, hiszen egy ilyen út javító út volna P-re nézve, ami a feltevésünk szerint lehetetlen. Ezzel az állítást beláttuk. P P élei körök utak 1. ábra. P és P élei, Megjegyzés. Minden, amit eddig javító utakról mondtunk, páros és nem páros gráfokra egyaránt igaz. Innentől viszont csak páros gráfokkal foglalkozunk, mert az alább ismertetendő eljárásban kihasználjuk a gráf páros voltát. Nem páros gráfokban is lehet hatékonyan legnagyobb párosítást keresésni, ezt azonban mi nem tárgyaljuk. Javító utak keresése páros gráfokban szélességi kereséssel dott a G = (, ;E) páros gráf, ebben kell keresnünk egy legnagyobb párosítást. Ezt úgy tesszük, hogy mohón keresünk egy P kiindulási párosítást, amit majd addig növelünk, amíg egy legnagyobb párosítást nem kapunk. z alább részletezett eljárást először szemléletesen, kis példákon kézzel alkalmazható módon tárgyaljuk, a fejezet végén vázoljuk, hogy nagyobb példákon hogyan lehet kivitelezni az eljárást számítógép segítségével. Előkészületek: z eljárásnál az elején el kell dönteni, melyik osztály felől indulunk. Most például a párosítást felől fogjuk keresni. z eljárás során fontos, hogy -ből -ba csak párosításon kívüli, -ból -be pedig csak párosításbeli élen léphetünk. Ezt úgy biztosítjuk, hogy megirányítjuk G éleit: a párosítás élei mindig -ból -be mutassanak, a többi -ből -ba. míg nincs párosításunk (P = ), minden él -ből -ba mutat. (Természetesen, ha felől keresnénk párosítást, fordítva irányítottuk volna G éleit.) z eljárás során az aktuális párosítást az élek irányítása jelzi, melyet időnként változtatni fogunk. z aktuális párosítást mindig P-nek fogjuk hívni. Kis példákon persze az irányítás helyett az élek vékony / vastag rajzolásával is jelezhetjük, hogy mely élek vannak a párosításban.

Első lépés: mohón keresünk egy párosítást. Sorra vesszük csúcsait, és megvizsgáljuk az éppen aktuális v csúcs szomszédait. Ha van közöttük olyan u csúcs, ami még nem szerepel a párosításban (azaz u-nak nincs szomszédja -ban (az irányítást figyelembe véve!)), belevesszük; magyarán a vu él irányítását megfordítjuk. Ha az utolsó csúcsot is megvizsgáltuk -ben, egy új él bevételével nem bővíthető (de nem feltétlenül egy lehető legnagyobb) párosítást kaptunk (az -ból -be irányított élek ezek). Második lépés: Javító utakat keresünk. z irányítás miatt minden út felváltva lép P-n kívüli és P-beli éleken, így nekünk egy b fedetlen csúcsot egy a fedetlen csúccsal összekötő utat kell keresnünk; az automatikusan javító út lesz. Javító út keresésének lépései: Készítünk egy kétsoros táblázatot. fölső sor az elérési lista, az alsó a honnan lista. (1) Felírjuk az elérési listába fedetlen csúcsait (az összeset). z elérési listában szereplő csúcsokat listázottnak hívjuk; ezeket fogjuk sorban átvizsgálni. lattuk üres a honnan lista. (2) Legyen v az elérési lista első nem átvizsgált eleme. Írjuk az elérési lista végére v eddig nem listázott szomszédait (innentől ezek is listázottak), és mindegyik alá (a honnan listába) írjuk föl v nevét. v csúcsot ezután átvizsgáltnak hívjuk. Ezt a folyamatot nevezzük a v csúcs átvizsgálásának. () Ismételjük az előző lépést addig, míg 1) fedetlen -beli csúcsot veszünk föl az elérési listába, vagy 2) az elérési lista összes csúcsát át nem vizsgáljuk. 1)-es eset: fedetlen -beli csúcsot vettünk az elérési listába. Hívjuk ezt a csúcsot v 1 -nek. honnan lista alapján tudjuk, hogy v 1 -et melyik csúcsból értük el; legyen ez v 2. Persze v 2 szerepel v 1 előtt az elérési listában, a honnan listából látjuk, hogy őt v -ból értük el stb., így a feljegyzések alapján visszaérünk egy -beli fedetlen csúcsba. Ezen csúcsok sorozata egy irányított út, mely két fedetlen csúcsot köt össze, azaz a fenti megjegyzés szerint javító út P-re nézve. javító út éleinek irányítását megfordítva (azaz felcserélve a P-beli és az azon kívüli éleit) kapunk egy P-nél nagyobb párosítást; ezután a fenti eljárással újra kereshetünk javító utat az új, nagyobb párosításra nézve. Mivel a fedetlen csúcsok száma minden lépésben csökken, előbb-utóbb véget ér az eljárás azzal, hogy előáll a 2)-es eset. 2)-es eset: az elérési lista összes elemét átvizsgáltuk, de nem értünk el fedetlen csúcsba. Ekkor az alábbi tétel szerint megtaláltuk a lehető legnagyobb párosítást, ráadásul bizonyítékot is kapunk erre: Tétel. Tegyük föl, hogy a fenti eljárás során előáll a 2)-es eset. Legyen rendre X, illetve Y az elérési listában szereplő -beli, illetve -beli csúcsok halmaza. Ekkor N(X) = Y, és X deficite éppen P, azaz nincs a P-nél nagyobb párosítás. izonyítás. Legyen F X a -beli fedetlen csúcsok halmaza. Ekkor persze P pontosan F csúcs híján fedi -t, azaz P = F. Legyen v X egy tetszőleges csúcs, u pedig a v egy tetszőleges szomszédja G-ben (tehát az eredeti, irányítatlan gráfban). N(X) = Y igazolásához be kell látnunk, hogy u Y. Ha vu P, akkor v nem fedetlen, tehát a honnan listában szerepel alatta egy csúcs. Mivel felé csak P-beli élen léphettünk és v-t csak egy P-beli él fedheti, ez a csúcs az u; emiatt u is szerepel az elérési listában, tehát u Y. Ha vu / P, akkor v

4 átvizsgálása során u-t bevettük az elérési listába (vagy már eleve ott volt), tehát ismét u Y. Ezzel azt láttuk be, hogy N(X) Y. Mivel minden Y -beli csúcsot egy X-beli csúcs (nevezetesen a honnan listában alatta szereplő) szomszédjaként vettünk az elérési listába, N(X) = Y. Már csak azt kell megmutatni, hogy X deficite éppen F, vagyis hogy X N(X) = X Y = F. Ehhez azt gondoljuk meg, hogy P egy teljes párosítás Y és X \F között. Először lássuk be, hogy Y minden elemének van P-beli párja X \ F-ben. Legyen u Y. 2)-es eset szerint P lefedi u-t; legyen tehát v az u P-beli szomszédja. Ekkor v az u átvizsgálása során bekerült az elérési listába 1, tehát v X \ F. Másodszor lássuk be, hogy X \ F minden elemének van P-beli párja Y -ban. Ha v X \ F, akkor v-nek persze van P-beli párja, és N(X) = Y miatt az Y -beli. Példa: Lássuk az eljárás megvalósítását az alábbi képen látható gráffal illusztrálva. C D E F G H 1 2 4 5 6 7 8 C D E F G H 1 2 4 5 6 7 8 2. ábra. Fölül látjuk a gráfot magát; alatta a mohón talált párosítással és az annak megfelelő irányítással. Végezzük el ezen a gráfon és a kiindulási párosításon az eljárás lépéseit! Elérési lista: 6 7 8 D E 4 2 5 F Honnan: 6 6 7 D E 2 lépéseket jelek választják el egymástól. 4. lépésben a 8 nevű csúcsot vizsgáljuk át, ahonnan azonban egy új csúcsot sem érünk el, ezért az elért csúcsok listája nem bővül. Hasonló a helyzet a 8. lépésben. Mivel F fedetlen -beli csúcs, a táblázatból kiolvasható F 2 6 út javító út lesz. Elvégezve a javítást az alábbi párosítást kapjuk: 1 Vagy esetleg már u átvizsgálása előtt is ott volt. Előfordulhat ez?

5 C D E F G H 1 2 4 5 6 7 8. ábra. növelt párosítás. Erre újra elvégezve az eljárás lépéseit, a következő táblázat adódik: Elérési lista: 7 8 D E 4 5 Honnan: 7 7 D E z eljárás úgy ér véget, hogy átvizsgáltuk az összes listázott csúcsot, és nem tudunk több csúcsot listázni. Ekkor a Tétel szerint az X = {7; 8; 4; 5} = {4; 5; 7; 8} csúcshalmaz szomszédsága N(X) = Y = {D; E} (ezt ellenőrizhetjük is az eredeti gráfon). z X halmaz deficite tehát kettő, és az aktuális párosításunk kettő híján minden csúcsot fed -ben; összevetve kapjuk, hogy ő egy legnagyobb párosítás. Számítógépes implementálás Kis gráfok esetében még át tudjuk tekinteni a fenti eljáráshoz szükséges információkat a táblázat és a gráf ábrája segítségével. zonban nagy gráfok esetében, melyeknél már a vizuális megjelenítés sem célszerű, természetes a kérdés, hogy számítógéppel hogyan lehet a fenti eljárást kivitelezni, a szükséges adatokat tárolni. gráfokat többféleképpen lehet és szokás kezelni, a legalkalmasabb adattárolási struktúra kiválasztása függ a gráf és a feladat jellegétől is. Mi most csak egy változatot mutatunk be. Gráf tárolása: csúcsokat sorszámozzuk 1-től n-ig (n a gráf csúcsszáma); majd készítünk egy listát, melyben minden sorszámhoz (azaz csúcshoz) egy újabb listát rendelünk, amely az ő szomszédjait tartalmazza (az aktuális irányítást figyelembe véve). Ez a SZOMSZ lista; egy v csúcsra tehát SZOMSZ(v) egy, a v szomszédait tartalmazó lista. Érdemes bevezetni egy FEDETT listát, ami minden csúcsról eltárolja, hogy fedi-e P. Például ha az uv irányított él, u, v, szerepel a gráfban, de nem szerepel a párosításban, akkor ő -ből felé van irányítva, tehát SZOMSZ(v) tartalmazza u-t, de SZOMSZ(u) nem tartalmazza v-t. Ha ezt az élt bevesszük a párosításba, azt úgy adminisztráljuk, hogy a v szomszédai közül kivesszük u-t, és az u szomszédai közé bevesszük v-t, valamint alkalmasan módosítjuk a FEDETT értékeket is. Elérési lista (ELERESI): z eljárás szerinti sorrendben írjuk bele az elért csúcsokat (azok sorszámát). Honnan lista (HONNN): z eljárás szerinti sorrendben írjuk bele a honnan értéket (a megfelelő csúcs sorszámát); az elérési lista elején szereplő, fedetlen -beli csúcsoknál üres értéket (vagy megfelelő jelölőt) használunk. Csúcsok állapotlistája (LLPOT): készítünk egy n elemű tömböt, és minden elem háromféle lehet a csúcsok háromféle állapotának megfelelően, amit most számokkal

6 jelölünk: 0: még nem listázott csúcsok; 1: listázott, de még nem átvizsgált csúcsok; 2: átvizsgált csúcsok. Kezdetben minden 1 i n számra LLPOT(i) = 0. csúcsok állapotát az eljárás lépéseinek megfelelően módosítjuk: amikor listába kerül, 1-re, amikor átvizsgáljuk, 2-re. z eljárás során az ELERESI lista soron következő i elémenek szomszédait kell áttekinteni, azaz végig kell mennünk a SZOMSZ(i) elemein. Ezek közül azon j csúcsokat, melyeknél LLPOT(j) = 0, beteszzük az ELERESI lista végére, LLPOT(j)-t 1- re változtatjuk, a HONNN lista megfelelő elemét i-re módosítjuk, majd ha végigvettük SZOMSZ(i) elemeit, LLPOT(i)-t 2-re állítjuk. csúcsok listázásánál a FEDETT lista segítségével ellenőrizzük, hogy P fedi-e az adott csúcsot. fenti példa tárolása és az eljárás első lépése valahogy így néz ki. számítógép persze a betűvel jelölt csúcsokat is sorszámként tárolná (9, 10,..., 16). gráf tárolása (csúcsok és szomszédaik; helytakarékossági okokból a csúcsok alá írjuk azok szomszédait): Csúcs: 1 2 4 5 6 7 8 C D E F G H Szomszédok F G D D E 1 2 4 5 listája: E Állapotlista csúcsai: 1 2 4 5 6 7 8 C D E 2 G H 1. lépés: 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 2. lépés: 0 0 0 0 0 2 1 1 0 1 0 1 0 0 0 0. lépés: 0 0 0 0 0 2 2 1 0 1 0 1 1 0 0 0 4. lépés: 0 0 0 0 0 2 2 2 0 1 0 1 1 0 0 0 5. lépés: 0 0 0 1 0 2 2 2 0 1 0 2 1 0 0 0 6. lépés: 0 1 0 1 0 2 2 2 0 2 0 2 1 0 0 0 7. lépés: 0 1 0 1 1 2 2 2 0 2 0 2 2 0 0 0 8. lépés: 0 1 0 2 1 2 2 2 0 2 0 2 2 0 0 0 9. lépés: 0 2 0 2 1 2 2 2 0 2 0 2 2 1 0 0