Introduktion til grafer Introduktion til grafer • Uorienterede grafer • Uorienterede grafer • Repræsentation • Repræsentation • Dybdeførst søgning • Dybdeførst søgning • Sammenhængskomponenter • Sammenhængskomponenter • Breddeførst søgning • Breddeførst søgning • Todelte grafer • Todelte grafer Philip Bille Uorienterede grafer Visualisering af internettet • Uorienteret graf (undirected graph). Mængde af knuder (vertices) forbundet parvis med kanter (edges). knude kant 0 6 1 8 7 9 10 11 12 2 3 4 5 • Hvorfor grafer? • Modellerer naturligt mange problemer i mange forskellige områder. • Tusindvis af praktiske anvendelser. • Hundredevis af kendte grafalgoritmer. http://en.wikipedia.org/wiki/Opte_Project Visualisering af Facebook venskaber Tube map Metro London 1 Chesham 9 2 8 Chalfont & Latimer Amersham Watford A Rickmansworth Ruislip Manor Ruislip Gardens Edgware Stanmore Harrow & Wealdstone Harrowon-the-Hill West Harrow South Harrow Northwick Park Queensbury Preston Road Kingsbury Sudbury Hill Stonebridge Park Willesden Junction Kensal Rise Alperton Queen’s Park Greenford Kilburn High Road Kilburn Park Maida Vale Warwick Avenue West Acton 3 North Acton Acton Central Ealing Common South Acton D Acton Town Chiswick Park Shepherd’s Bush White City 2 Wood Lane Shepherd’s Bush Market Goldhawk Road Hammersmith West Kensington Kew Gardens Richmond Heathrow Terminal 5 Queensway 4 5 3 Gloucester Road Charing Cross St. James’s Park 2 Vauxhall Clapham Junction Tooting Broadway Colliers Wood South Wimbledon Royal Victoria East India 4 3 Custom House for ExCeL Emirates Royal Docks Heron Quays Protein interaktionsnetværk Protein-protein interaktionsnetværk, Jeong et al, Nature Review | Genetics Royal Albert West Silvertown South Quay D Beckton Park Cyprus North Greenwich Emirates Greenwich Peninsula Pontoon Dock Gallions Reach London City Airport 2 Beckton King George V Queens Road Peckham Elephant & Castle Peckham Rye Stockwell New Cross Greenwich Woolwich Arsenal E Elverson Road Lewisham 3 4 Hammersmith & City Jubilee Metropolitan Sydenham Northern Piccadilly Anerley 5 6 Central District District open weekends, public holidays and some Olympia events Forest Hill Crystal Palace Bakerloo Circle 4 Deptford Bridge Brockley Honor Oak Park Denmark Hill 3 Cutty Sark for Maritime Greenwich New Cross Gate Bank Waterloo & City line open between Bank and Waterloo 0621-0030 Mondays to Fridays and 0802-0030 Saturdays. Between Waterloo and Bank 0615-0030 Mondays to Fridays and 0800-0030 Saturdays. Closed Sundays and Public Holidays. --------------------------------------------------------------------------------Camden Town Sunday 1300-1730 open for interchange and exit only. --------------------------------------------------------------------------------Canary Wharf Step-free interchange between Underground, Canary Wharf DLR and Heron Quays DLR stations at street level. --------------------------------------------------------------------------------Cannon Street Open until 2100 Mondays to Fridays and 0730-1930 Saturdays. Closed Sundays. --------------------------------------------------------------------------------Embankment Bakerloo and Northern line trains will not stop at this station from early January 2014 until early November 2014. --------------------------------------------------------------------------------Emirates Greenwich Peninsula and Emirates Royal Docks Special fares apply. Open 0700-2000 Mondays to Fridays, 0800-2000 Saturdays, 0900-2000 Sundays and 0800-2000 Public Holidays. Opening hours are extended by one hour in the evening after 1 April 2014 and may be extended on certain events days. Please check close to the time of travel. --------------------------------------------------------------------------------Heron Quays Step-free interchange between Heron Quays and Canary Wharf Underground station at street level. --------------------------------------------------------------------------------Hounslow West Step-free access for manual wheelchairs only. --------------------------------------------------------------------------------Kilburn No step-free access from late January 2014 until mid May 2014. --------------------------------------------------------------------------------Stanmore Step-free access via a steep ramp. --------------------------------------------------------------------------------Turnham Green Served by Piccadilly line trains until 0650 Mondays to Saturdays, 0745 Sundays and after 2230 every evening. At other times use District line. --------------------------------------------------------------------------------Waterloo Waterloo & City line open between Bank and Waterloo 0621-0030 Mondays to Fridays and 0802-0030 Saturdays. Between Waterloo and Bank 0615-0030 Mondays to Fridays and 0800-0030 Saturdays. Closed Sundays and Public Holidays. No step-free access from late January 2014 until late July 2014. --------------------------------------------------------------------------------West India Quay Not served by DLR trains from Bank towards Lewisham before 2100 on Mondays to Fridays. --------------------------------------------------------------------------------- Key to lines Island Gardens F Victoria Norwood Junction Waterloo & City West Croydon DLR 5 7 London Overground This diagram is an evolution of the original design conceived in 1931 by Harry Beck Correct at time of going to print, December 2013 8 "Visualizing friendships", Paul Butler MAYOR OF LONDON Prince Regent Penge West Tooting Bec 4 West India Quay Crossharbour Kennington Canning Town Blackwall Canary Wharf Canada Water Borough Brixton Balham Morden Bermondsey Star Lane Langdon Park Mudchute Clapham Common 3 Rotherhithe London Bridge West Ham All Saints Poplar Wapping Surrey Quays Clapham South F Tower Gateway Southwark Lambeth North Oval Wandsworth Road 2 Westferry Limehouse C Plaistow Bromleyby-Bow Devons Road Stepney Green Whitechapel Shadwell River Thames Temple Embankment 1 Pimlico Imperial Wharf Aldgate East Dagenham Heathway Upney Barking East Ham Upton Park Bow Road Aldgate Tower Hill Fenchurch Street Waterloo Clapham North 2 Monument Blackfriars Westminster Clapham High Street 1 Bank Cannon Street Mansion House Elm Park Becontree Woodgrange Park Stratford High Street Abbey Road Mile End B Hornchurch Stratford Bow Church 1 St. Paul’s Holborn Leicester Square Upminster Upminster Bridge Dagenham East Wanstead Park Hackney Wick Shoreditch High Street Moorgate Gants Hill Leytonstone High Road Leyton Pudding Mill Lane Bethnal Green Liverpool Street Barbican Chancery Lane Covent Garden Victoria Wimbledon Transport for London Homerton 2 Hoxton Barkingside Newbury Park Wanstead Stratford International Dalston Junction A Fairlop Leytonstone Leyton Midland Road 3 Hackney Central Canonbury Haggerston Farringdon Russell Square Piccadilly Circus Sloane Square South Kensington Caledonian Road & Barnsbury Walthamstow Queen’s Road Grange Hill Redbridge Walthamstow Central Dalston Kingsland Old Street Euston Square Green Park East Putney Wimbledon Park Highbury & Islington King’s Cross St. Pancras Tottenham Court Road Marble Arch 1 Putney Bridge Southfields Mornington Crescent Goodge Street Oxford Circus Hyde Park Corner Fulham Broadway Parsons Green Kentish Town Camden Road 4 Snaresbrook Blackhorse Road Tottenham Hale Euston Warren Street Bond Street Finsbury Park Angel Knightsbridge Earl’s Court South Tottenham Arsenal Holloway Road Kentish Town West Camden Town Great Portland Street Baker Street Check before you travel Chigwell Hainault South Woodford Seven Sisters Manor House Upper Holloway Chalk Farm Regent’s Park Lancaster Gate High Street Kensington Turnpike Lane Archway Tufnell Park Bayswater 2 Gunnersbury Hounslow Central Hatton Cross Heathrow Terminals 1, 2, 3 Heathrow Terminal 4 St. John’s Wood West Brompton Hounslow East Hounslow West Holland Park Barons Court Turnham Stamford Ravenscourt Brook Park Green Osterley E Swiss Cottage Edgware Marylebone Road Notting Hill Gate Kensington (Olympia) 2 Finchley Road South Hampstead Roding Valley Woodford Harringay Green Lanes Crouch Hill Highgate Gospel Oak Hampstead Heath 5 Buckhurst Hill Arnos Grove Bounds Green Caledonian Road West Hampstead 9 6 Debden Loughton Southgate West Finchley Finchley Central Belsize Park Kilburn Edgware Road Ladbroke Grove Latimer Road East Acton Ealing Broadway South Ealing Paddington Westbourne Park Park Royal North Ealing Northfields Hampstead Finchley Road & Frognal Royal Oak Hanger Lane Boston Manor Brent Cross Brondesbury Kensal Green Perivale 3 Hendon Central Brondesbury Park Oakwood Woodside Park Mill Hill East Dollis Hill Willesden Green Harlesden Cockfosters Wood Green Golders Green Sudbury Town High Barnet Totteridge & Whetstone East Finchley Neasden Wembley Park 8 Epping Colindale South Kenton North Wembley Wembley Central Northolt 6 5 4 Burnt Oak Canons Park Kenton 7 Theydon Bois 4 Hatch End Headstone Lane North Harrow Rayners Lane C 6 Carpenders Park Pinner Eastcote South Ruislip B 5 5 Bushey Northwood Northwood Hills Ruislip Ickenham 4 8 7 6 Watford Junction Watford High Street Moor Park West Ruislip Hillingdon Uxbridge 3 Special fares apply 7 Croxley Chorleywood London metro, London Transport Grafanvendelser graf knuder kanter kommunikation computer kabel transport vejkryds vej transport lufthavn fly spil position lovligt træk neuralt netværk neuron synapse finansnetværk valuta, aktier transaktioner kredsløb logiske porte forbindelse fødekæde dyrearter rovdyr-byttedyr molekyle atom bindinger 9 Emirates Air Line Terminologi Uorienterede grafer • Uorienteret graf. G = (V, E) • Lemma. ∑v∈V deg(v) = 2m. • V = mængde af knuder • Bevis. Hvor mange gange tælles kant med i sum? • E = mængde af kanter (par af knuder) • n = |V|, m = |E| • Sti/vej (path). Sekvens af knuder forbundet af kanter. 0 • Kreds (cycle). Sti hvis start- og slutknude er ens. • Sammenhæng (connectivity). To knuder er forbundne hvis der er en vej i mellem dem V = {0,1,2,…,12} deg(2) = 3 sti fra 0 til 3 6 1 4 7 9 10 11 12 n = 13, m = 15 2 3 4 8 5 kreds Algoritmiske problemer på grafer • Vej. Findes der en sti mellem s og t? • Korteste vej. Hvad er den korteste vej mellem s og t? • Længste vej. Hvad er den længste vej mellem s og t? • Kreds. Er der en kreds i grafen? • Eulertur. Er der en kreds, der benytter hver kant netop en gang? • Hamiltontur. Er der en kreds, der benytter hver knude netop en gang? • Sammenhæng. Er det muligt at forbinde alle knuder med en sti? • Mindste udspændende træ. Hvad er den bedste måde at forbinde alle knuder på? • Tosammenhæng. Er der en knude hvis fjernelse gør grafen usammenhængende? • Planaritet. Er det muligt at tegne grafen i planen uden kanter der krydser? • Grafisomorfi. Repræsenterer to mængde af knuder og kanter samme graf? Introduktion til grafer • Uorienterede grafer • Repræsentation • Dybdeførst søgning • Sammenhængskomponenter • Breddeførst søgning • Todelte grafer 8 7 9 10 11 12 2 3 E = {(0,1), (0,2) (0,4),(2,3),…, (11,12)} 0 6 1 • Grad (degree). deg(v) = antal naboer af v = antal kanter incidente med v. 5 Repræsentation Incidensmatrix • G graf med n knuder og m kanter. • Graf G med n knuder og m kanter. • Repræsentation. Vi skal bruge følgende operationer på grafer. • Incidensmatrix (adjacency matrix). 0 • 2D n ⨉ n tabel A. • NEIGHBORS(v): returner alle naboer af v. • A[i,j] = 1 hvis i og j er naboer og 0 ellers. • INSERT(v, u): tilføj kant (v, u) til G (medmindre den allerede findes). • Plads. O(n2) 6 1 8 7 2 9 3 4 5 • Graf G med n knuder og m kanter. 6 1 • A[i] indeholder liste af naboer af i. • ADJACENT, NEIGHBORS OG INSERT i O(deg(v)) tid. 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 0 1 1 0 1 0 0 0 0 0 0 0 0 • NEIGHBORS(v) i O(n) tid. 1 1 0 0 0 0 0 0 0 0 0 0 0 0 • INSERT(v, u) i O(1) tid. 2 1 0 0 1 0 1 0 0 0 0 0 0 0 3 0 0 1 0 1 1 0 0 0 0 0 0 0 4 1 0 0 1 0 1 0 0 0 0 0 0 0 5 0 0 1 1 1 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 1 1 0 0 0 0 7 0 0 0 0 0 0 1 0 0 0 0 0 0 8 0 0 0 0 0 0 1 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0 1 1 1 10 0 0 0 0 0 0 0 0 0 1 0 0 1 11 0 0 0 0 0 0 0 0 0 1 0 0 1 12 0 0 0 0 0 0 0 0 0 1 1 1 0 Repræsentation 8 7 9 10 11 12 2 • Tabel A[0..n-1]. • Tid. 9 0 • Incidensliste (adjacency list). • Plads. O(n + ∑v∈V deg(v)) = O(n + m) 7 • ADJACENT i O(1) tid 12 Incidensliste 5 4 10 11 8 2 3 • Tid. 0 6 1 • ADJACENT(v, u): afgør om knude v og u er naboer. 3 5 4 0 1 2 4 1 0 2 3 0 3 5 2 4 5 4 0 3 5 5 2 3 4 6 7 8 7 6 8 6 9 10 11 10 9 12 11 9 12 12 9 10 12 11 Datastruktur ADJACENT NEIGHBORS INSERT Plads incidensmatrix O(1) O(n) O(1) O(n2) incidensliste O(deg(v)) O(deg(v)) O(deg(v)) O(n+m) • I den virkelige verden er grafer tynde. Dybdeførst søgning • Algoritme til systematisk at udforske alle knuder og kanter i en graf. • Dybdeførst søgning (depth-first search) fra knude s. Introduktion til grafer s • Lad alle knuder være umarkede og besøg knude s. • Besøg knude v: • Marker v. • Uorienterede grafer • Besøg alle umarkede naboer af v rekursivt. • Repræsentation • Dybdeførst søgning • Sammenhængskomponenter • Intuition. • Breddeførst søgning • Udforsk ud fra s i en retning indtil vi når “blindgyde”. • Gå tilbage til sidste knude hvor der var flere uudforskede kanter og fortsæt på samme måde. • Todelte grafer • Starttid (discovery-time). Første gang vi besøger en knude i rekursionen. • Sluttid (finish-time). Sidste gang vi besøger en knude i rekursionen. Dybdeførst søgning Dybdeførst søgning • Opgave. Kør DFS fra knude 0 og angiv start- og sluttider. Antag incidenslisterne er sorterede. DFS(s) time = 0 DFS-VISIT(s) s 5 0 2 1 4 3 DFS-VISIT(v) v.d = time++ marker v for alle umarkerede naboer u DFS-VISIT(u) u.π = v v.f = time++ • Tid. (på incidenslisterepræsentation) • Rekursion bliver kaldt på hver knude højst een gang. • O(deg(v)) tid ved knude v. • ⟹ i alt O(n + ∑v∈V deg(v)) = O(n + m) tid. • Kun knuder forbundet til s bliver besøgt. Farveudfyldning Sammenhængskomponenter • Farveudfyldning (flood fill). Skift farve på sammenhængende område af grønne pixels. • Def. Et sammenhængskomponent (connected component) er en maksimal delmængder af sammenhængende knuder. 0 6 1 8 7 9 10 11 12 2 3 4 5 • Hvordan finder vi alle sammenhængskomponenter? • Algoritme. • Algoritme. • Byg en gittergraf og kør DFS. • Lad alle knuder være umarkede. • Knude: pixel. • Sålænge der findes en umarkeret knude: • Kant: mellem nabopixels af samme farve • Område: alle knude forbundet til en given knude. • Vælg en umarkeret knude v og kør DFS på v. • Tid. O(n + m). Breddeførst søgning • Breddeførst søgning (breadth-first search) fra s. Introduktion til grafer • Lad alle knuder være umarkede. • Marker s og tilføj s til kø K. s • Sålænge K ikke er tom: • Uorienterede grafer • Repræsentation • Dybdeførst søgning • Udtag knude v fra K. • For alle umarkede naboer u af v • Marker u. • Tilføj u til K. • Sammenhængskomponenter • Breddeførst søgning • Todelte grafer • Intuition. • Udforsk ud fra s i alle retninger i stigende afstand fra s. • Korteste-veje fra s. • Afstand fra s i BFS træ = afstand fra s i graf. Breddeførst søgning Korteste veje • Opgave. Kør BFS fra knude 0 og angiv korteste veje. Antag incidenslisterne er sorterede. • Lemma. BFS beregner længden af den korteste vej fra s til alle andre knuder. • Intuition. • BFS inddeler knuder i lag (layers). Lag i indeholder knude med afstand i fra s i BFS-træ. L1 L2 L0 5 0 2 s • Hvad indeholder lagene? • L0 = {s} 1 4 • L1 = alle naboer til L0. • L2 = alle naboer til L1 der ikke er naboer til L0 • L3 = alle naboer til L2 der ikke er naboer til L0 og L1. 3 • … • Li = alle naboer til Li-1 der ikke er naboer til Lj for j < i-1 • = alle knuder med afstand i til s. Breddeførstsøgning BFS(s) marker s s.d = 0 K.ENQUEUE(s) gentag indtil K er tom v = K.DEQUEUE() for alle umarkede naboer u marker u u.d = v.d + 1 u.π = v K.ENQUEUE(u) • Tid. (på incidenslisterepræsentation) • Knude besøges højst een gang. • O(deg(v)) tid ved knude v. • ⟹ i alt O(n + ∑v∈V deg(v)) = O(n + m) tid. • Kun knuder forbundet til s bliver besøgt. s Introduktion til grafer • Uorienterede grafer • Repræsentation • Dybdeførst søgning • Sammenhængskomponenter • Breddeførst søgning • Todelte grafer L3 Todelte grafer Todelte grafer • Def. En graf G er todelt (bipartite) hvis og kun hvis alle knuder kan farves røde eller blå således at alle kanter har et rødt og et blåt endepunkt. • Udfordring. Givet en graf G, afgør om G er todelt. • Alternativt def. En graf G er todelt hvis og kun hvis knuder kan deles i to mængder V1 og V2 så alle kanter går mellem V1 og V2. 1 2 1 2 6 7 6 3 7 3 4 5 4 5 • Anvendelser. • Kodning, skedulering, matching, …. • Mange grafproblemer er nemmere på todelte grafer. Todelte grafer Todelte grafer • Lemma. En graf G er todelt hvis og kun hvis alle kredse i G har lige længde. • Lemma. Lad G være graf med lag L0, L1, …, Lk produceret af BFS. Præcis en af følgende holder: • Bevis. • ⟹ Hvis todelt så starter og slutter alle kredse i samme side. 1. Ingen kant forbinder 2 knuder i samme lag ⟹ G er todelt. • ⟸ Hvis der er kreds af ulige længde kan vi ikke farve den. 2. En kant forbinder 2 knuder i samme lag ⟹ G indeholder en ulige kreds ⟹ G er ikke todelt. • Bevis. 1. Farv lag skiftevis. 2. Lad (u,v) være kant mellem to knuder i samme lag. Kig på kreds givet ved sti s til u + (u,v) + sti v til s. Todelte grafer Grafalgoritmer • Algoritme. L1 • For hver kant i G undersøg om den er mellem knuder i samme lag. L2 L0 • Kør BFS på G. s L3 • Tid. • O(n + m) L1 Introduktion til grafer • Uorienterede grafer • Repræsentation • Dybdeførst søgning • Sammenhængskomponenter • Breddeførst søgning • Todelte grafer Tid Plads Dybdeførst søgning O(n + m) O(n + m) Breddeførst søgning O(n + m) O(n + m) Sammenhængskomponenter O(n + m) O(n + m) Todelte grafer O(n + m) O(n + m) • Antager G er givet i incidenslisterepræsentation L2 L0 s Algoritme L3
© Copyright 2024