46
Lenktynės Uždavinys “LENKTYNĖS” 2007, Daugai Vilius Visockas Slide 1 of 316

Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

  • Upload
    stamos

  • View
    51

  • Download
    6

Embed Size (px)

DESCRIPTION

Slide 1 of 316. Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas. Turinys. Uždavinio sąlygos pristatymas “ Paprastas ” uždavinio sprendimas “ Advance d ” uždavinio sprendimas Kaip nereikėjo daryti Tiesioginė lenktynės transliacija. S ąlygos pristatymas. Lenktyniauja N ma šinų. - PowerPoint PPT Presentation

Citation preview

Page 1: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

Uždavinys“LENKTYNĖS”

2007, DaugaiVilius Visockas

Slide 1 of 316

Page 2: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

Turinys

• Uždavinio sąlygos pristatymas

• “Paprastas” uždavinio sprendimas

• “Advanced” uždavinio sprendimas

• Kaip nereikėjo daryti

• Tiesioginė lenktynės transliacija

Page 3: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

Uždavinio lenktynės sprendimas

0

10

20

30

40

50

60

70

80

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31

Page 4: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

Sąlygos pristatymas

• Lenktyniauja N mašinų.

• Jos važiuoja įvairiais grečiais.

• Jos startuoja skirtingu laiku.

• Norime sužioti kaip išsidėstys po K pirmųjų lenkimų.

• Nėra dviejų lenkimų vienu metu

• Po K lenkimų visos mašinos bus jau išvažiavusios

Page 5: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

Paprastas sprendimas(bet teisingas)

Page 6: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

Sprendimas (1)

• Nagrinėti visas galimas mašinų poras (N x N), skaičiuoti jų lenkimosi laiką, laikus surikiuoti ir išrinkti K-jo lenkimo laiką.

• Apskaičiuoti kiekvienos mašinos nuvažiuotą atstumą po K-ojo lenkimo.

• Surikiuoti mašinas pagal nuvažiuotą atstumą.

Page 7: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

Kaip nereikėjo spręsti (cont.)

1. “Vienos minutės” sprendimas

Daroma prielaida, kad per vienutę minutę

įvyksta ne daugiau nei vienas lenkimas, nors

sąlygoje pasakyta, kad tiesiog nėra jokių dviejų

lenkimų vienu metu.

Page 8: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

Kaip nereikėjo spręsti (cont.)

Bėgiko ir vežlio paradoksas: bėgikas niekada neaplenks vėžlio!

Page 9: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

Sprendimasnaudojant Heap duomenų struktūrą

Page 10: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

Faktai

• Įmanomas daugiausiai vienas lenkimas imant bet kokią mašinų porą.

• Lenkimo tarp dviejų mašinų gali ir nebūti.

• Jei mašinos važiuoja vienodu greičiu, lenkimo nebus niekada.

• Lenkimas bus tik tada, jei viena mašina važiuoja greičiau už kitą ir išvažiuoja vėliau.

Page 11: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

Sprendimas naudojant heap’ą.• Susirikiuojame mašinas pagal išvykimo laiką

Pastaba. skaičius - mašinos numeris

1

laikasstartas greitis

1000 500

300 500

200 600

900 200

1200 300

2

3

4

5

Page 12: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

Sprendimas naudojant heap’ą.

3 2 4 1 5

• Tikriname ar gretimos mašinų poros lenkiasi.

• Jeigu lenkiasi, lenkimo įvykį dedame į heap’ą.

Page 13: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

Kas tas

“HEAP’as” ???

Paspauskite čia ir sužinosite kas yra heapas!

Page 14: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės MAGIC BUTTON X

Page 15: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės MAGIC BUTTON X

Page 16: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

Heap’as

• Duomenų struktūra, gebanti– Greitai surasti mažiausią elementą– Ištrinti/Pašalinti elementą.

Puikiai pritaikomas Dijikstros algoritmui.

Page 17: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

Heap’as2

9 6

10 15 8

Heap’as – pilnas dvejetainis medis

Kiekvienas iš vaikų yra didesnis už tėvą

Page 18: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

Heap’asElemento įterpimas (1)

2

9 6

10 15 8

Pirmas elementas dedamas pirmoje laisvoje vietoje.

Page 19: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

Heap’asElemento įterpimas (2)

2

9 6

10 15 8 1

Pirmas elementas dedamas pirmoje laisvoje vietoje.

Page 20: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

Heap’asElemento įterpimas (3)

2

9 6

10 15 8 1

Kad būtų išlaikytos heap’o savybės, reikia lyginti jį su tėvu.

Jei naujas narys mažesnis – sukeičiame.

Page 21: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

Heap’asElemento įterpimas (4)

2

9 1

10 15 8 6

Kartojame lyginimą sukeistam elementui.

Einam link medžio viršūnės – panašiai kaip rikiavimas įterpimu.

Page 22: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

Heap’asElemento įterpimas (5)

1

9 2

10 15 8 6

Page 23: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

Heap’asElemento įterpimas (6)

1

9 2

10 15 8 6

Baigiame, kai:

• Prieiname medžio šaknį.

• Nebereikia sukeisti elementų.

Page 24: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

Heap’asElemento įterpimas

Page 25: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

Heap’asElemento įterpimas

2

9 6

10 15 8 1

Page 26: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

Heap’asElemento įterpimas

2

9

610 15 8

1

Page 27: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

Heap’asElemento įterpimas

1

9 2

10 15 8 6

Baigiame, kai:

• Prieiname medžio šaknį.

• Nebereikia sukeisti elementų.

Page 28: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

Heap’asMažiausio elemento išėmimas

Page 29: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

Heap’asMažiausio elemento išėmimas

1

9 2

10 15 8 6

Visada šakninė viršūnė, pagal jo savybes.

Mažiausias elementas

Mažiausia elementą įsimename, o vietoj jo įrašome paskutinį heap’o elementą.

Sumažiname heapo dydį.

Page 30: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

Heap’asMažiausio elemento išėmimas

1

9 2

10 15 8 6

Paskutinis elementas

Page 31: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

Heap’asMažiausio elemento išėmimas

6

9 2

10 15 8

Bet šakninė viršūnė dabar pažeidžia heap’o savybes.

Šakninė viršūnė (6) didesnė už 2.

Page 32: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

Heap’asMažiausio elemento išėmimas

6

9 2

10 15 8

Ją sukeisime su mažesne iš jos vaikų.

Page 33: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

Heap’asMažiausio elemento išėmimas

6

9 2

10 15 8

Jeigu sukeistam elementui vėl pažeistume heapo savybę, reiktų padaryti dar vieną sukeitimą.

Page 34: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

Heap’asMažiausio elemento išėmimas

6

9 2

10 15 8

Vėl turime heap’ą...

Page 35: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

? ?

?

?

?

Grįžti prie sprendimo

Page 36: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

Sprendimas naudojant heap’ą.

3 2 4 1 5

• Surikiuojame mašinas pagal starto laiką

• Tikriname ar gretimos mašinų poros lenkiasi.

• Jeigu lenkiasi, lenkimo įvykį dedame į heap’ą(raktas – apskaičiuotas lenkimosi laikas)

Ar trečia lenkia antrą?

Ar antra lenkia ketvirtą?

Ar ketvirta lenkia pirmą?

Ar pirma lenkia penktą?

Page 37: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

Sprendimas naudojant heap’ą.

3 2 4 1 5

• Paeiliui išiminėjame įvykius iš heap’o (K kartų), ir:

• Imituojame lenkimą: greitesnę mašina lenkia lėtesnę• Sukeičiame mašinas• Patikriname ar aplenktos mašinos nesiveja dar kita mašina

Jei taip, įvykį vėl dedame į heapą.

• Patikriname ar lenkusi mašina lenks dar kitąJei taip, įvykį vėl dedame į heapą.

Page 38: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

Tikrinimas ar mašina lenkia kitąKada A aplenks mašiną B? Tarkime tas laikas yra x, ir

A B

Starto laikas TA TB

Greitis GA GB

(x – TA) * GA = (x – TB) * GB;

x * GA – TA * GA = x * GB – TB * GB;

x * (GA - GB) = TA * GA – TB * GB;

x = (TA * GA – TB * GB) / (GA – GB)

Page 39: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

PastabosRealieji skaičiai.

Visiškai teisingame sprendime lenkimo laikas turėjo būti saugomas trupmenoje, nes lyginant realiuosius skaičius galima paklaida, ypač kai lenkimai yra labai artimi.

Page 40: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

Atvejų nagrinėjimas

• Mašinos juda vienodu greičiu.

WW Golf 1

WW Golf 1

• Mašinos niekada nelenkia viena kitos.

Page 41: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

Atvejų nagrinėjimas• Mašinos juda nevienodu greičiu.• Greitesnė mašina startuoja vėliau

WW Golf 1

Mercedes

• Mašinos niekada nelenkia viena kitos.

Page 42: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

Atvejų nagrinėjimas• Mašinos juda nevienodu greičiu.• Greitesnė mašina startuoja anksčiau

WW Golf 1

Mercedes

Greitesnė mašina lenkia lėtesnę

Page 43: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

Didžioji “Viliaus” taurė

Page 44: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

WW Golf 1

Mercedes

R

# Vilius has signed in.

9.25 [ Vilius ] Adomai, lenkimas :P

Page 45: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

WW Golf 1

Mercedes

R

# Vilius has signed in.

9.28 [ Vilius ] Adomai, tuoj kartos lenkimą!9.28 [ Adomas ] Joa, matau krč…

# Vilius has signed off

Page 46: Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas

Lenktynės

# Vilius has signed off

[Vilius] 19:21 Jeigu turite klausimų, galiu atsakyti

[Vilius] 19:21 Aj tiesa...

# Vilius has signed off

# Vilius has signed in