1 UNION-FIND. 2 inddata: en følge af heltalspar (p, q); betydning: p er “forbundet med” q uddata: intet, hvis p og q er forbundet, ellers (p, q) Eksempel.

Slides:



Advertisements
Lignende præsentationer
8. december 2010 på Egegård Skole
Advertisements

Niveauer af abstrakte maskiner
1 Problemkompleksitet 2 Problemers kompleksitet En ineffektiv algoritme: køretiden vokser eksponentielt med input- størrelsen Et problem, der ikke kan.
Dummyvariabler 13. oktober 2006
Kredsløbstræning
SQL underforespørgsler og Join
1 Belastningsprøve Fredag 16. september Agenda Kl. 08:00Velkomst v. Allan Harding Status på Imerco projekt, v. Allan Harding Oplæg til belastningsprøve,
Bolig selskabernes Landsforening– Almene lejeboliger - Maj/Juni Almene lejeboliger - Danmarkspanelet - Maj/Juni 2010.
Algoritmer og Datastrukturer 2 Del-og-kombiner [CLRS, kapitel , , 28
1 Rekursion og algoritmedesign. 2 Rekursion Rekursiv definition af X: X defineres i termer af sig selv. Rekursion er nyttig, når en generel version af.
1 Går fra at vil maksimere dækning til at minimere omkostning Det kender vi fra den anden bog Omkostningen er afstanden gange antal enheder der skal transporteres.
1 Effektiv forrentning Kjeld Tyllesen PEØ, CBS Erhvervsøkonomi / Managerial Economics Kjeld Tyllesen, PEØ, CBS.
Statistik.
Algoritmer og Datastrukturer 2 Gerth Stølting Brodal.
Økonometri 1: Specifikation og dataproblemer1 Økonometri 1 Specifikation, og dataproblemer 4. november 2005.
Representations for Path Finding in Planar Environments.
Opslagsfelter (Access, del 6). RHS – Informationsteknologi 2 Udgangspunkt Vi er ofte i den situation, at valg af en type for et felt ikke begrænser vores.
Østjysk rapport om udligning og tilskud Seminar om udligning den 26. April 2010 Job og Økonomidirektør Asbjørn Friis Jensen, Favrskov.
FEN Diskret matematik/Seminar 3 - proofs 1 Beviser Et bevis er en argumentation, som overbeviser om, at en påstand er sand, påstanden kaldes.
Søgning & sortering Intro søgning Lineær søgning Binær søgning
Økonometri 1: Dummy variable
Signifikanstest ved (en eller) to stikprøver
1 Bevisteknikker. 2 Bevisteknikker (relevant både ved design og verifikation) Teorem: Der findes uendeligt mange primtal Bevis: Antag at der findes et.
Algoritmer og Datastrukturer 1 Union-Find [CLRS, kapitel ] Gerth Stølting Brodal.
Induktion og rekursion
1 Logaritmer Logaritmer optr æ der hyppigt i forbindelse med algoritmeanalyse. Definition: For ethvert B > 0 og N > 0 g æ lder, at log B N = X, hvis B.
Algoritmer og Datastrukturer 1 Binære Søgetræer [CLRS, kapitel 12] Gerth Stølting Brodal.
FEN Rekursion og induktion1 Induktion og (især) rekursion Mange begreber defineres ud fra en basis og så en gentagen anvendelse af et antal regler.
Et vejledningsværktøj KOT Ansøgningsflow. Forsiden af Optagelse.dk 2.
1 Algoritme til at løse knude P-center problemet Algoritmen brugte set covering problemet Virker derfor kun til knude problemer Vi vil alligevel bruge.
Datastrukturer og Collections Rasmus D. Lehrmann DM
Multi-vejs hobe med ekstra bytes Foredrag: Claus Jensen Projektmedlemmer: Jyrki Katajainen, Fabio Vitale, Claus Jensen.
1 Datalogi C Datastrukturer og algoritmer ved Keld Helsgaun.
1 HMAK XMLRelationel model og XMLNOEA / PQC 2005 SQLServer og XML Hent data via URL Generering af xml –Raw –Auto –Explicit Hent data via template Evt.
1 Maksimal strømning. 2 Strømningsnetværk Et strømningsnetværk (eller blot et netværk) N består af En vægtet, orienteret graf G med ikke-negative heltallige.
Grafer og Algoritmer Rasmus D. Lehrmann DM
Globaliseringsredegørelsen 24.mar. 14 Figurer fra Danmark tiltrækker for få udenlandske investeringer i Sådan ligger landet
1 Sortering I elementære metoder. 2 Plan Terminologi Elementære metoder til sortering -sortering ved udvælgelse -sortering ved indsættelse -Shellsort.
Anvendelser I Leg og spil.
Matematik B 1.
1 Algoritmik ved Keld Helsgaun. 2 Plan Algoritmebegrebet et simpelt eksempel Et eksempel på algoritmedesign.
1 USB Gennemgang af installering af USB driver til ICT. Er fortaget på Windows XP.
Grunde til at jeg elsker dig
GP 11, 14/ Grundlæggende programmering Efterår 2001 Forelæsning 11 onsdag 14/ kl. 9:15 – 12:00.
1 PC baseret dataanalyse og simulering Week2 A. 2 SAS input/output filer Inddata -textfil - SAS-program -textfil- SAS datasæt SAS system SAS listing -print.
1 Design, analyse og verifikation. 2 Algoritmebegrebet Design Bevisteknikker Design ved hjælp at matematisk induktion Analyse O-notation Logaritmer Binær.
Fundamentale datastrukturer
Design, verifikation og analyse
1 Design, analyse og verifikation. 2 Design Bevisteknikker Design ved hjælp at matematisk induktion Analyse O-notation Logaritmer Binær søgning Verifikation.
1 Grafalgoritmer I. 2 Plan Grafer - definition - anvendelser - terminologi - eksempler på grafproblemer Grafgennemgang - dybde-først-gennemgang - bredde-først-gennemgang.
Opslagsfelter (Access, del 6). RHS – Informationsteknologi – Udgangspunkt Vi er ofte i den situation, at valg af en type for et felt ikke begrænser.
Grafalgoritmer II.
Slide Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 15 Algorithms for Query Processing and Optimization.
Algoritmer og Datastrukturer 1 Binære Søgetræer [CLRS, kapitel 12] Gerth Stølting Brodal.
1 Sortering. 2 Sortering ved fletning (merge-sort) 7 2 | 9 4  | 2  2 79 | 4   72  29  94  4.
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Algoritmer og Datastrukturer 1 Dynamisk Rang & Interval Træer [CLRS, kapitel 14] Gerth Stølting Brodal.
1 Kap. 4, Jordens Tyngdefelt = Torge, 2001, Kap. 3. Tyngdekraftens retning og størrelse g (m/s 2 ) Acceleration Tyngdepotentialet (W): evene til at udføre.
Algoritmer og Datastrukturer 2 Gerth Stølting Brodal Minimum Udspændende Træer (MST) [CLRS, kapitel 23]
Økonometri 1: Specifikation og dataproblemer1 Økonometri 1 Specifikation, og dataproblemer 9. november 2004.
Algoritmer og Datastrukturer 1 Binære Søgetræer [CLRS, kapitel 12] Gerth Stølting Brodal Aarhus Universitet.
Kapitel 5 Lineære DB-modeller
1 Center problems Placer et givet antal nye faciliteter Alt efterspørgsel skal dækkes Dækningsdistancen skal minimeres.
Algoritmer og Datastrukturer 1 Union-Find [CLRS, kapitel ] Gerth Stølting Brodal Aarhus Universitet.
Økonometri 1: F151 Økonometri 1 Specifikation og dataproblemer 10. november 2006.
Globaliseringsredegørelse 21.mar. 11 Globaliseringsredegørelsen 2011 Grafer fra temakapitlet Eksporten som drivkraft for vækst og velstand.
Algoritmer og Datastrukturer 2 Gerth Stølting Brodal Korteste Veje [CLRS, kapitel 24]
Grundlæggende programmering Forår 2002
Algoritmer og Datastrukturer 2 Del-og-kombiner [CLRS, kapitel , , 28
Algoritmer og Datastrukturer 1 Union-Find [CLRS, kapitel ] Gerth Stølting Brodal Aarhus Universitet.
Præsentationens transcript:

1 UNION-FIND

2 inddata: en følge af heltalspar (p, q); betydning: p er “forbundet med” q uddata: intet, hvis p og q er forbundet, ellers (p, q) Eksempel på anvendelse: Forbindelser i computernetværk Hvert heltal repræsenterer en computer Hvert talpar repræsenterer en netværksforbindelse imellem to computere UNION-FIND-problemet

indud begrundelse Eksempel på udførelse

4 Forbundethed kan være svær at afgøre (især for en computer)

5 (1) Hvis p er forbundet med q, så er q forbundet med p Symmetri: F(p, q)  F(q, p) (2) Hvis p er forbundet q, og q er forbundet med r, så er p forbundet med r Transitivitet:F(p, q) ^ F(q, r)  F(p, r) (3) p er forbundet med sig selv Refleksivitet:F(p, p) F er en ækvivalensrelation Egenskaber ved relationen “forbundet med”, F Knuder, der er forbundet med hinanden, tilhører samme ækvivalensklasse (komponent)

6 if (id[p] == id[q]) continue; for (int i = 0; i < N; i++) if (id[i] == id[p]) id[i] = id[q]; Vedligehold et array, id, over navne på komponenter: Hvis p og q er forbundet, så er id[p] = id[q] (ellers er id[p] ≠ id[q] ) Dette kan gøres ved for hvert par ( p, q ) at gøre ingenting, hvis id[p] = id[q] ellers at ændre alle indgange med p ’s id til q ’s id Version 1 (Quick-FIND) Initialisering: Sæt id[i] = i for ethvert i

7 Quick-FIND Navnet skyldes et konstant tidsforbrug til at afgøre,om der findes en forbindelse mellem p og q (om p og q tilhører samme komponent). Denne operation kaldes for FIND. Med hvad med tidsforbruget til at forene to komponenter? Denne operation kaldes for UNION. Et fingerpeg herom fås ved at følge ændringerne af arrayet id.

Problem ved Quick-FIND: undersøger alle indgange i id ved UNION og er derfor for langsom for store problemer Inddata id

9 Brug grafisk repræsentation Numre i knuder Topknuder repræsenterer komponenter ( id ) Knude i tilhører komponenten id[i]

11 Problemstørrelse og tidsforbrug Givet et stort problem med 10 9 knuder og forbindelser (f.eks. telefonnetværk, computerchip) For hver ny forbindelse gennemløber Quick-FIND hele arrayet id Hvis der for hver tabeltilgang i gennemsnit benyttes 10 maskinoperationer, så udføres i værste tilfælde cirka 10 9 *10 10 *10 = maskinoperationer Antag at tidsforbruget for en maskinoperation i gennemsnit er sekunder. Så vil det samlede tidsforbrug være cirka *10 -9 sekunder = sekunder ≈ 3000 år!

12 Vedligehold et array over navne på komponenter: hvis p og q er forbundet, så er ( id[p] )* = ( id[q] )*, hvor ( id[p] )* = id [ id [ id [... id [ p ]]]] (fortsæt indtil værdien ikke ændres) ellers er ( id[p] )* ≠ ( id[q] )* Dette kan gøres ved for hvert par ( p, q ) at gøre ingenting, hvis ( id[p] )* = ( id[q] )* ellers sættes id[i] lig med j, hvor i = ( id[p] )* og j = ( id[q] )* Version 2 (Quick-UNION) int i = p, j = q; while (i != id[i]) i = id[i]; while (j != id[j]) j = id[j]; if (i == j) continue; id[i] = j;

13 Quick-UNION Navnet skyldes et konstant tidsforbrug til at forene to komponenter. (operationen UNION) Med hvad med tidsforbruget til at at afgøre, om der findes en forbindelse mellem p og q ? (operationen FIND) Et fingerpeg herom fås ved at følge ændringerne af arrayet id.

Problemer ved Quick-UNION: beregningen af ( id[p] )* og ( id[p] )* kan være tidsmæssigt dyr ingen garanti for tilstrækkelig effektivitet for “meget store” problemer Hurtigere end Quick-FIND for “tilfældige” inddata (men er inddata i praksis tilfældige?) Inddata id

17 Den grafiske repræsentationen af Quick-UNION viser: eller Kan effektiviteten øges ved at vælge sammenkædningen hensigtsmæssigt? FIND gennemløber et eller to træer (tester om den samme rod nås) UNION sammenkæder to træer:

18 int i = p, j = q; while (i != id[i]) i = id[i]; while (j != id[j]) j = id[j]; if (i == j) continue; if (size[i] < size[j]) { id[i] = j; size[j] += size[i]; } else { id[j] = i; size[i] += size[j]; } Modificér Quick-UNION, så “ubalance” undgås vedligehold et array over komponenternes størrelse balancér ved at sammenkæde en mindre komponent under en større komponent Version 3 (vægtet quick-UNION)

19 For at besvare dette spørgsmål: udfør empiriske undersøgelser, og analysér algoritmen matematisk Det ses, at højden af det største træ kun øges, når det sammensættes med et lige så højt træ Det kan bevises, at FIND i værste tilfælde foretager 2 log 2 N undersøgelser per forbindelse (i gennemsnit et konstant antal undersøgelser) I tilfældet med 10 9 knuder og forbindelser udføres programmet på under 1 minut (jvf. med de 3000 år for Quick-FIND) Er effektiviteten forbedret?

20 int i = p, j = q; while (i != id[i]) i = id[i]; while (j != id[j]) j = id[j]; if (i == j) continue; int root; if (size[i] < size[j]) { root = id[i] = j; size[j] += size[i]; } else { root = id[j] = i; size[i] += size[j]; } for (i = p; i != id[i]; i = j) { j = id[i]; id[i] = root; } for (j = q; j != id[j]; j = i) { i = id[j]; id[j] = root; } Version 4 (Vægtet Quick-UNION med vejkomprimering) Metode: Sørg i UNION-delen for, at alle knuder, der er besøgt i FIND-delen, peger på den nye rod

23 log* vokser meget langsomt, således er log*(N) ≤ 5 for alle praktiske værdier af N (N ≤ ≈ ). Den maksimale højde er i praksis konstant log*(2) = 1 log*(4) = log*(2 2 ) = 2 log*(16) = log*(2 4 ) = 3 log*(65536) = log*(2 16 ) = 4 log*( ) = 5 Beviset for sætningen er meget svært (på trods af, at algoritmen er simpel) [ log 2 (10 9 ) ≈ 30, mens log*(10 9 ) ≈ 5 ] Sætning: Den maksimale højde er log*(N) hvor funktionen log*(N) er det antal gange log 2 kan tages af N, før værdien bliver ≤ 1 Effektiviteten af version 4

24 Sammenfatning Værste tidsforbrug per forbindelse er proportional med Quick-FIND N Quick-UNIONN Vægtet Quick-UNION log 2 (N) Vejkomprimering log*(N) ≤ 5 start med en simpel algoritme benyt ikke en simpel algoritme på et “stort” problem abstraktioner (her træer) er værdifulde tilstræb garanti for køretidsforbrug i værste tilfælde Og hvad kan vi så lære af det? Gotha Andersen