Dijkstra algoritmusa

Hasonló dokumentumok
Algoritmuselmélet. Legrövidebb utak, Bellmann-Ford, Dijkstra. Katona Gyula Y.

Dijkstra algoritmusa Hujter Bálint Specmat továbbképzés, július 1.

A számítástudomány alapjai

Példa Hajtsuk végre az 1 pontból a Dijkstra algoritmust az alábbi gráfra. (A mátrixban a c i j érték az (i, j) él hossza, ha nincs él.

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

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

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

Gráfalgoritmusok ismétlés ősz

Algoritmuselmélet 7. előadás

Algoritmusok bonyolultsága

A gráffogalom fejlődése

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.

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

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

Euler tétel következménye 1:ha G összefüggő síkgráf és legalább 3 pontja van, akkor: e 3

Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése

Totális Unimodularitás és LP dualitás. Tapolcai János

Algoritmuselmélet zárthelyi (BSc képzés) április 24.

További forgalomirányítási és szervezési játékok. 1. Nematomi forgalomirányítási játék

24. MINIMÁLIS KÖLTSÉGŰ UTAK I.

Példa Hajtsuk végre az 1 pontból a Dijkstra algoritmust az alábbi gráfra. (A mátrixban a c i j érték az (i, j) él hossza, ha nincs él.

Adatszerkezetek 2. Dr. Iványi Péter

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:

B-fa. Felépítés, alapvető műveletek. Programozás II. előadás. Szénási Sándor.

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t

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:

Gráfok, definíciók. Gráfok ábrázolása. Az adott probléma megoldásához ténylegesen mely műveletek szükségesek. Ábrázolások. Példa:

A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

Nagyságrendek. Kiegészítő anyag az Algoritmuselmélet tárgyhoz. Friedl Katalin BME SZIT február 1.

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

22. GRÁFOK ÁBRÁZOLÁSA

Bonyolultságelmélet. Monday 26 th September, 2016, 18:50

Diszkrét matematika 2.C szakirány

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

Algoritmuselmélet 2. 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)}

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

Bonyolultságelmélet. Thursday 1 st December, 2016, 22:21

Algoritmuselmélet 18. előadás

Gráf-algoritmusok Legrövidebb utak

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.

Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT- 4. kurzus. 3. Előadás: A mohó algoritmus

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

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

Algoritmuselmélet 11. előadás

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

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

Diszkrét matematika 2.C szakirány

Miskolci Egyetem Gépészmérnöki és Informatikai Kar Informatikai Intézet Alkalmazott Informatikai Intézeti Tanszék

Kereső algoritmusok a diszkrét optimalizálás problémájához

Általános algoritmustervezési módszerek

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

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

Ugrólisták. RSL Insert Example. insert(22) with 3 flips. Runtime?

Adatszerkezetek 7a. Dr. IványiPéter

Algoritmuselmélet 1. előadás

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

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

Diszkrét matematika 2.C szakirány

Intelligens Rendszerek Elmélete IRE 4/32/1

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

Gráfelmélet/Diszkrét Matematika MSc hallgatók számára. 3. Előadás

Gráfok 1. Tárolási módok, bejárások. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

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

Kereső algoritmusok a diszkrét optimalizálás problémájához

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

Algoritmusok és adatszerkezetek gyakorlat 07

A programozás alapjai előadás. [<struktúra változó azonosítók>] ; Dinamikus adatszerkezetek:

Az optimális megoldást adó algoritmusok

Számítógép és programozás 2

Gyakori elemhalmazok kinyerése

Operációkutatás. Vaik Zsuzsanna. Budapest október 10. First Prev Next Last Go Back Full Screen Close Quit

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

Számítógép és programozás 2

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

2017/ Szegedi Tudományegyetem Informatikai Intézet

Gráfelméleti feladatok. c f

Matematikai problémák vizsgálata a Maple programcsomag segítségével

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)

Branch-and-Bound. 1. Az egészértéketű programozás. a korlátozás és szétválasztás módszere Bevezető Definíció. 11.

Legrövidebb útkereső algoritmusok

Programozási segédlet

Diszkrét matematika 2.C szakirány

Mesterséges intelligencia 2. laborgyakorlat

1. Szerencsére elmúlt a veszély, pánikra semmi ok. Luke Skywalker ugyan kivont lézerkarddal ment órára a jediképzőben, de a birodalmi gárda

A 2013/2014 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

Alkalmazott modul: Programozás. Programozási tételek, rendezések. Programozási tételek Algoritmusok és programozási tételek

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

Adatszerkezetek I. 8. előadás. (Horváth Gyula anyagai felhasználásával)

Felvételi tematika INFORMATIKA

Diszkrét matematika 2.

Struktúra nélküli adatszerkezetek

Diszkrét matematika 2.

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

Modern irányzatok a bonyolultságelméletben: éles korlátok és dichotómia tételek

Algoritmuselmélet 1. előadás

Számítógépes döntéstámogatás. Genetikus algoritmusok

19. AZ ÖSSZEHASONLÍTÁSOS RENDEZÉSEK MŰVELETIGÉNYÉNEK ALSÓ KORLÁTJAI

Algoritmusok Tervezése. 6. Előadás Algoritmusok 101 Dr. Bécsi Tamás

Gráfelméleti alapfogalmak

Átírás:

Budapesti Fazekas és ELTE Operációkutatási Tanszék 201. július 1.

Legrövidebb utak súlyozatlan esetben v 4 v 3 Feladat Hány élből áll a legrövidebb út ezen a gráfon az s és t csúcsok között? v v 6 v 7 s v 1 t v 2

Megoldás szélességi keresés Súlyozatlan eset 1 3 s 2 4(t) 2 3 2 v 2 v 1 v 4 v v 6 0(s) 1 v 3 t v 7

Legrövidebb utak szerkezete Súlyozatlan eset 1 3 s 2 4(t) 2 3 2 v 2 v 1 v 4 v v 6 0(s) 1 v 3 t v 7

Legrövidebb utak szerkezete Súlyozatlan eset, módosított gráf s 1 3 x v 1 v 4 2 4(t) 2 v 2 v v 6 2 3 v 3 v 7 0(s) 1 t

v 4 v 3 4 6 3 v t 2 2 4 v 6 3 v 7 7 s 6 v 1 v 2 Feladat (feladatsor/1b) Park, ösvények, sétaidő. Legrövidebb s-ból t-be menő séta? Feladat Adott egy G = (V, E) gráf és az élein egy l : E R + hosszúságfüggvény. Adott s, t V csúcsokra keressük a minimális összhosszúságú st utat.

Egy ötlet 2 4 3

Egy ötlet 2 4 3 Nagy (bonyolult) élhosszak esetén nagyon megnő a lépésszám.

Miért nem jó a szélességi bejárás? Legrövidebb utak súlyozott gráfokban v 4 v 3 4 8 3 v t 2 2 4 v 6 3 v 7 7 s 6 v 1 v 2 A szélességi keresés a legkevesebb élből álló utakat találja meg, de itt a minimális összhosszúságú út élből áll.

(196) x y z Lezárt (átvizsgált) Nem lezárt (elért) Nem lezárt (nem elért) Edsger W. Dijkstra (1930-2002) Elért csúcsokon d(v) érték. Ez alapján választjuk a következőt. Néha update-elni kell a d(v) értéket.

1. fázis v 4 v 3 4 v 2 6 3 t 2 v 6 3 v 7 7 4 v 2 v d(v) sz. lez.? s 0 - L v 1 6 s N v 4 s N s 6 v 1

2. fázis v 4 v 3 4 v 2 6 3 t 2 v 6 3 v 7 7 4 v 2 v d(v) sz. lez.? s 0 - L v 4 s L v 1 6 s N v 9 v 4 N s 6 v 1

3. fázis v 4 v 3 4 v 2 v 6 3 6 3 t 2 7 v 7 4 v 2 v d(v) sz. lez.? s 0 - L v 1 6 s L v 4 s L v 2 11 v 1 N v 9 v 4 N v 6 13 v 1 N s 6 v 1

4. fázis most jön az érdekes lépés! v 4 4 v 2 v 6 v 7 v 3 s 6 v 1 3 6 7 t 2 3 4 v2 v d(v) sz. lez.? s 0 - L v 1 6 s L v 4 s L v 9 v 4 L v 2 11 * v 1 N v 3 1 v N v 6 11 v N *Holtverseny esetén választhatunk pl. lexikografikus sorrend szerint.

Végállapot Végül a 8. fázisban t-t is lezárjuk, és leolvassuk a végeredményt. v 4 v 3 4 v 2 6 3 t 2 v 6 3 v 7 7 s 6 v 1 4 v 2 v d(v) sz. lez.? s 0 - L v 1 6 s L v 2 11 v 1 L v 3 1 v 4 L v 4 s L v 9 v 4 L v 6 11 v L v 7 14 v 6 L t 16 v 7 L

Az algoritmus helyességének igazolása Az algoritmus helyessége a következő állításon múlik: Állítás Az algoritmus futásának tetszőleges köztes állapotában igaz: Minden L állapotú u csúcsra d(u) a legrövidebb su út hossza. A már elért N állapotú v csúcsokra d(v) értéke a legrövidebb olyan út hossza, ami csupa L állapotú csúcsokon át halad s-ből v-be. Teljes indukcióval könnyen igazolható.

A legrövidebb út kiolvasása v 4 v 3 4 6 3 v t 2 2 4 v 6 3 v 7 7 s 6 v 1 v 2 v d(v) sz l? s 0 - L v 1 6 s L v 2 11 v 1 L v 3 1 v L v 4 s L v 9 v 4 L v 6 11 v L v 7 14 v 6 L t 16 v 7 L

A legrövidebb út kiolvasása v 4 v 3 4 6 3 v t 2 2 4 v 6 3 v 7 7 s 6 v 1 v 2 v d(v) sz l? s 0 - L v 1 6 s L v 2 11 v 1 L v 3 1 v L v 4 s L v 9 v 4 L v 6 11 v L v 7 14 v 6 L t 16 v 7 L

Fizikai modell Feladat Egy asztalon fekvő néhány gyöngyöt változatos hosszúságú madzagokkal kötünk össze, így egy gráfszerű hálózatot kapunk. Fogjuk meg az egyik gyöngyöt és kezdjük függőlegesen felemelni az asztalról. Milyen sorrendben fog a többi gyöngy elemelkedni az asztalról?

Adjacencia-mátrix és irányított gráfok A B C D E F G H I Artúrbánya - 37-28 - 70-22 - Bélavár 21-32 84 19 31-20 6 Cecíliavásárhely 42 66 - - - 82 32-21 Dénesville - 28 32 - - 21 32 89 61 Elemérhalom 12-97 26 - - 72 34 83 Ferencváros 4-29 94 3 - - - 64 Gizellarév - 63 31 92-1 - 7 19 Hugófalva 31 21 42 - - 23 61-69 Ilonahegy 77-21 64-83 26 - -

Gráf megadása éllistával 0 1 7 1 2 2 2 1 3 1 3 7 3 4 4 0 2 4 2 3 1 4 4 4 3 8 2 4 8 0 7 3 2 1 2 3 4 8 4 4 7 3 8

A Dijkstra-algoritmus lépésszáma Nehéz értelmes matematikai állításokat megfogalmazni. Problémák: Mi is egy lépés? Hogyan mérjük az input méretét? Az O(...) jelölés fogalmilag nehéz; anélkül viszont minden rémesen bonyolult. Mégis fontos róla beszélni.

A Dijkstra-algoritmus lépésszáma Feladat (Feladatsor/12.) INPUT: Gráf éllistával (n = 1000, m = 000); l : E Q + ; s, t V. OUTPUT: legrövidebb st-út hossza. Számolósegéd (1 dollárért): összead vagy összehasonlít a) Elvállalnád-e a munkát, ha 2 millió dollárt ajánlanak érte? b) És 100 ezer dollárért?

A Dijkstra-algoritmus lépésszáma Egy n csúcsú és m élű gráfon naivan n 2 + 2m becslés adható: n-szer kell minimumot választani Minden él esetén 1 db összeadás és 1 db összehasonlítás

A Dijkstra-algoritmus lépésszáma Egy n csúcsú és m élű gráfon naivan n 2 + 2m becslés adható: n-szer kell minimumot választani Minden él esetén 1 db összeadás és 1 db összehasonlítás Ha a gráf ritka, akkor az n 2 tag dominál, ezt kellene csökkenteni. (A másikat úgyis reménytelen.)

Az n 2 javítása Hogyan ússzuk meg a sokszori minimumkeresést? Tartsuk eleve növekvő sorba rendezetten a csúcsokat. Beszúrás: log 2 n összehasonlítással megy. Csökkentés: törlés + beszúrás. (?) Felső becslés a dollárok számára: Az n = 1000, m = 000 esetben ez: 2 m + m log 2 n 2 000 + 000 10 < 10 Számítástechnikailag ezt nehéz kezelni! Erre lehet egy megoldás a bináris fa.

A bináris fa 3 4 7 9 10 8 12 6 10 13 10

A bináris fa 3 4 7 9 10 8 12 6 10 13 10 6

A bináris fa 3 4 7 9 10 8 12 6 10 13 10 6

A bináris fa új elem hozzáadása 3 4 7 9 6 8 12 6 10 13 10 10

A bináris fa új elem hozzáadása 3 4 7 9 6 8 12 6 10 13 10 10

A bináris fa új elem hozzáadása 3 4 6 9 7 8 12 6 10 13 10 10

A bináris fa új elem hozzáadása 3 4 6 9 7 8 12 6 10 13 10 10

A bináris fa új elem hozzáadása 3 4 6 9 7 8 12 6 10 13 10 10

Műveletek a bináris fán 3 4 6 9 7 8 12 6 10 13 10 10 Feladat Hogyan kell a bináris fát módosítani a következő esetekben? Egy elemet törlök. Egy elemet csökkentek. Egy elemet növelek.

A lépésszámról algoritmuselméleti nyelven n csúcsú és m élű gráfra: O(n 2 ) naiv O(m log 2 n) bináris fa O(m + n log 2 n) ún. Fibonacci-kupacokkal Bizonyos fontos speciális esetekben még ennél is jobb eredmények kaphatók. Igazából mindegyikhez oda kell érteni egy K szorzót, amennyiben legfeljebb K bitesek az élsúlyaink. Definíció Egy f : N R függvény esetén azt mondjuk, hogy egy algoritmus lépésszáma O(f (n)), ha van olyan c pozitív egész szám, amelyre bármilyen n pozitív egész esetén egy n bites inputra legfeljebb c f (n) lépésben lefut az algoritmus.

Alkalmazhatóság Optimális a következő értelemben: Nem ismert olyan algoritmus a legrövidebb út feladatra, ami minden inputra biztosan működik és jobb futásidőt garantál. Használják-e ipari útvonalkeresőkben?

A*-algoritmus Hogyan lehetne a rossz irányokat kizárni? Bevezetünk egy h : V R + függvényt, h(v) egy heurisztikus becslés v és t távolságára. (Pl. légvonalbeli távolság) Egy már elért csúcsra jelölje g(v) az eddig megtalált legrövidebb sv út hosszát, és tekintsük a következőt: f (v) = g(v) + h(v) A soron következő csúcs mindig a min. f (v) értékű nem lezárt csúcs. Egy csúcs esetleg többször is sorra kerülhet!

A*-algoritmus Feladat Bizonyítsd be, hogy ha a h : V R + optimista, azaz h(v) alulról becsüli a legrövidebb vt út hosszát minden v V esetén, akkor az A*-algoritmus egy optimális utat talál meg. Feladat Bizonyítsd be, hogy ha a h : V R + monoton, azaz minden uv élre: h(u) l(u, v) + h(v) akkor az A*-algoritmus csak egyszer viszgál át minden csúcsot. Hogyan találunk jó heurisztikát?

A Dijkstra-algoritmus egy érdekes variánsa Az l : E R függvény nem csak költség (hosszúság, idő) jellegű lehet, hanem kapacitás is (ilyenkor inkább c : E R). Feladat Adott egy úthálózat térképe (egyszerű gráffal modellezve). Mindegyik útszakaszról (élről) tudjuk, hogy legfeljebb mekkora tömegű teherautók közlekedhetnek rajta. Adjunk algoritmust, amely meghatározza, hogy legfeljebb milyen nehéz teherautóval lehet eljutni A-ból B-be.

A Dijkstra-algoritmus egy érdekes variánsa Az l : E R függvény nem csak költség (hosszúság, idő) jellegű lehet, hanem kapacitás is (ilyenkor inkább c : E R). Feladat Adott egy úthálózat térképe (egyszerű gráffal modellezve). Mindegyik útszakaszról (élről) tudjuk, hogy legfeljebb mekkora tömegű teherautók közlekedhetnek rajta. Adjunk algoritmust, amely meghatározza, hogy legfeljebb milyen nehéz teherautóval lehet eljutni A-ból B-be. Ilyenkor is működik a Dijkstra, csak helyett d(u) + l(u, v) < d(v) esetén d(u) + l(u, v) d(v) min{d(u), c(u, v)} > d(v) esetén min{d(u), c(u, v)} d(v)

Több optimális út Feladat (Feladatsor/8.) Egy gráffal megadott hálózatban minden útszakasznak (élnek) van hossza és útdíja is. Minimális útdíj-költséggel, ezen belül pedig a lehető legrövidebb úton szeretnénk eljutni S-ből T -be. Hogyan lehet megtalálni az optimális utat?

Több optimális út Feladat (Feladatsor/8.) Egy gráffal megadott hálózatban minden útszakasznak (élnek) van hossza és útdíja is. Minimális útdíj-költséggel, ezen belül pedig a lehető legrövidebb úton szeretnénk eljutni S-ből T -be. Hogyan lehet megtalálni az optimális utat? Első megoldási út: Trükkös súlyfüggvény: (c, l) vektorok. Összeadás és összehasonlítás is működik.

Több optimális út Feladat (Feladatsor/8.) Egy gráffal megadott hálózatban minden útszakasznak (élnek) van hossza és útdíja is. Minimális útdíj-költséggel, ezen belül pedig a lehető legrövidebb úton szeretnénk eljutni S-ből T -be. Hogyan lehet megtalálni az optimális utat? Első megoldási út: Trükkös súlyfüggvény: (c, l) vektorok. Összeadás és összehasonlítás is működik. Második megoldási út: Jellemezzük a legrövidebb utakat.

Segítő feladat: legkevesebb élű, azon belül legolcsóbb utak. 1 3 s 4 2 6 4(t) 3 v 1 v 4 2 3 2 3 3 7 4 2 v 2 v 3 v v 6 v 7 0(s) 6 1 t

Pontos élek Definíció Egy uv él pontos, ha d(v) d(u) = l(u, v). 1 4 9 6 17 3 2 3 11 3 14 7 4 11 0 6 6

Pontos élek Definíció Egy uv él pontos, ha d(v) d(u) = l(u, v). 1 4 9 6 17 3 2 3 11 3 14 7 43 11 0 6 6

Negatív élköltségek Feladat Működik-e a Dijkstra algoritmus, ha vannak negatív élköltségek is?

Negatív élköltségek Feladat Működik-e a Dijkstra algoritmus, ha vannak negatív élköltségek is? Nem, sőt más hatékony algoritmus sem ismert. A probléma NP-nehéz. Feladat (Feladatsor/1.) Van hatékony algoritmus a negatív élköltségek esetére. van hatékony algoritmus Hamilton-kör létezésének eldöntésére. Fontos speciális esetekben azért megoldható.

Konzervatív súlyozások Definíció Egy G = (V, E) irányított gráfon a c : E R költségfüggvény konzervatív, ha nincsen benne negatív összegű, egyirányú kör. Példa: energiavisszatápláló villanymozdonyok. Ebben az esetben meg tudjuk találni a min. összköltségű st-utat (de a Dijkstra nem jó, helyette Bellmann Ford-algoritmus).

Konzervatív súlyozások Definíció Egy G = (V, E) irányított gráfon a c : E R költségfüggvény konzervatív, ha nincsen benne negatív összegű, egyirányú kör. Példa: energiavisszatápláló villanymozdonyok. Ebben az esetben meg tudjuk találni a min. összköltségű st-utat (de a Dijkstra nem jó, helyette Bellmann Ford-algoritmus). Magyarázat: Legrövidebb sétát tudunk keresni, ez nem feltétlen út.

Hivatkozások Frank A.: Operációkutatás, Egyetemi jegyzet (2013), elérhető Frank András honlapján ELTE Egerváry Jenő Kutatócsoport: Operációkutatás példatár, http: //etananyag.ttk.elte.hu/files/downloads/_opkut_peldatar.pdf https://en.wikipedia.org/wiki/dijkstra s_algorithm Nemes Tihamér Országos Informatikai Tanulmányi Verseny archívuma (Programozás kategória) http://nemes.inf.elte.hu/nemes_archivum.html

Köszönöm a figyelmet!