SlideShare ist ein Scribd-Unternehmen logo
1 von 13
Grafer og grafalgoritmer
Jeanette Nielsen dm67
Agenda
• Begreber og terminologi
• Anvendelse
• Implementering
• Traverseringsalgoritmer
• Minimum spanning tree
• Dijkstra’s Algorithm
Begreber og terminologi I
• Vertex/node (knude)
• Edge (kant) – forbindelse mellem to vertieces
• Adjacent (nabo-knude)
• Path - gennemgang af grafens knuder.
• Cycle – gennmgang der starter og slutter i
samme knude (mere end en knude i grafen)
Begreber og terminologi II
• Connected graph – der er en sti mellem alle
vertices
• Complete graph – alle vertices er naboer
• Weighted graph – edges har en værdi
• Directed graph – hver edge går kun en
bestemt vej.
• Planar graph – grafen kan tegnes uden at
edges krydser over hinanden
Anvendelser af grafer
• C# og java Garbage Collection
• Ruteplanlægning
• Netværk
• Projektstyring /planlægning/tidsplan
Implementering I
• Nabo-Matrix
Fordele:
 Directed grafer
 Grafer med mange
edges
 ‘Does x know y?’
- spørgsmål
Ulemper:
ᵡ Mange tomme felter
ᵡ Svært af finde naboer
Implementering II
• Nabo-Liste
Fordele:
 Grafer med få edges
 Få overflødige felter
 ‘Hvem er nabo til x?’
- spørgsmål
Ulemper:
ᵡ Svært at besvære ‘kender x til y’?
Traverseringsalgoritmer
• Dybde-først:
• gå så langt som muligt og så backtrack
• Brede-først:
• besøg først alle nabo vertices før man går dybere
• BFS Start Hobart => H –> M -> C -> (A,S,B)-> P -> X -> D
– Undirected => H -> M ->(A,C, S)->(P,D,B,) ->X
• DFS Start Hobart => H -> M -> C -> (A ->P->X ->D) , (B -> S )
| (S), (B)
Minimum spanning tree
• Prim
– Vælg en start vertex
– Vælg altid den edge med den mindste vægt
• Kruskal
– Kik på alle edges, start med den med lavest vægt
– Gentage følgende step indtil træet er færdigt:
• Kik på alle edges, vælg den med laveste vægt
• Tjek om den laver en cycle ellers forbind den til
spanning træet
Dijkstra’s Algorithm
• Finder den hurtigste vej til alle Vertex fra en
given start vertex

Weitere ähnliche Inhalte

Mehr von jeanette89

Eksamen tn transport projekt
Eksamen tn transport projektEksamen tn transport projekt
Eksamen tn transport projektjeanette89
 
8 Distribueret programming - web services
8 Distribueret programming - web services8 Distribueret programming - web services
8 Distribueret programming - web servicesjeanette89
 
7 Distribueret programming - .NET remoting
7 Distribueret programming - .NET remoting7 Distribueret programming - .NET remoting
7 Distribueret programming - .NET remotingjeanette89
 
6 Parallelprogrammering
6 Parallelprogrammering6 Parallelprogrammering
6 Parallelprogrammeringjeanette89
 
5 grammatikker sprog og parsing
5 grammatikker sprog og parsing5 grammatikker sprog og parsing
5 grammatikker sprog og parsingjeanette89
 
4 Datastrukturer og Collections
4 Datastrukturer og Collections4 Datastrukturer og Collections
4 Datastrukturer og Collectionsjeanette89
 
3 Rekursion og rekursive algoritmer
3 Rekursion og rekursive algoritmer3 Rekursion og rekursive algoritmer
3 Rekursion og rekursive algoritmerjeanette89
 
1 Objekter og Klasser
1 Objekter og Klasser1 Objekter og Klasser
1 Objekter og Klasserjeanette89
 

Mehr von jeanette89 (9)

Eksamen tn transport projekt
Eksamen tn transport projektEksamen tn transport projekt
Eksamen tn transport projekt
 
9 XML
9 XML9 XML
9 XML
 
8 Distribueret programming - web services
8 Distribueret programming - web services8 Distribueret programming - web services
8 Distribueret programming - web services
 
7 Distribueret programming - .NET remoting
7 Distribueret programming - .NET remoting7 Distribueret programming - .NET remoting
7 Distribueret programming - .NET remoting
 
6 Parallelprogrammering
6 Parallelprogrammering6 Parallelprogrammering
6 Parallelprogrammering
 
5 grammatikker sprog og parsing
5 grammatikker sprog og parsing5 grammatikker sprog og parsing
5 grammatikker sprog og parsing
 
4 Datastrukturer og Collections
4 Datastrukturer og Collections4 Datastrukturer og Collections
4 Datastrukturer og Collections
 
3 Rekursion og rekursive algoritmer
3 Rekursion og rekursive algoritmer3 Rekursion og rekursive algoritmer
3 Rekursion og rekursive algoritmer
 
1 Objekter og Klasser
1 Objekter og Klasser1 Objekter og Klasser
1 Objekter og Klasser
 

2 Grafer

  • 2. Agenda • Begreber og terminologi • Anvendelse • Implementering • Traverseringsalgoritmer • Minimum spanning tree • Dijkstra’s Algorithm
  • 3. Begreber og terminologi I • Vertex/node (knude) • Edge (kant) – forbindelse mellem to vertieces • Adjacent (nabo-knude) • Path - gennemgang af grafens knuder. • Cycle – gennmgang der starter og slutter i samme knude (mere end en knude i grafen)
  • 4.
  • 5. Begreber og terminologi II • Connected graph – der er en sti mellem alle vertices • Complete graph – alle vertices er naboer • Weighted graph – edges har en værdi • Directed graph – hver edge går kun en bestemt vej. • Planar graph – grafen kan tegnes uden at edges krydser over hinanden
  • 6. Anvendelser af grafer • C# og java Garbage Collection • Ruteplanlægning • Netværk • Projektstyring /planlægning/tidsplan
  • 7.
  • 8. Implementering I • Nabo-Matrix Fordele:  Directed grafer  Grafer med mange edges  ‘Does x know y?’ - spørgsmål Ulemper: ᵡ Mange tomme felter ᵡ Svært af finde naboer
  • 9. Implementering II • Nabo-Liste Fordele:  Grafer med få edges  Få overflødige felter  ‘Hvem er nabo til x?’ - spørgsmål Ulemper: ᵡ Svært at besvære ‘kender x til y’?
  • 10. Traverseringsalgoritmer • Dybde-først: • gå så langt som muligt og så backtrack • Brede-først: • besøg først alle nabo vertices før man går dybere
  • 11. • BFS Start Hobart => H –> M -> C -> (A,S,B)-> P -> X -> D – Undirected => H -> M ->(A,C, S)->(P,D,B,) ->X • DFS Start Hobart => H -> M -> C -> (A ->P->X ->D) , (B -> S ) | (S), (B)
  • 12. Minimum spanning tree • Prim – Vælg en start vertex – Vælg altid den edge med den mindste vægt • Kruskal – Kik på alle edges, start med den med lavest vægt – Gentage følgende step indtil træet er færdigt: • Kik på alle edges, vælg den med laveste vægt • Tjek om den laver en cycle ellers forbind den til spanning træet
  • 13. Dijkstra’s Algorithm • Finder den hurtigste vej til alle Vertex fra en given start vertex

Hinweis der Redaktion

  1. Kan implementere med en dobbelt array [] []
  2. Kan implementeres som en list, hvor hver knude har en list med adjencencies Implementeres med Hashmap, key: Vertex, value: Adjencie list
  3. BFS Start Hobart => H –> M -> C -> (A,,S,B)-> P -> X -> D Undirected => H -> M ->(A,C, S)->(P,D,B,) ->X
  4. Optimistiske algoritmer Garantere ikke den bedste løsning
  5. The algorithm works as follows: A set of selected vertices (S = Solution) is constructed: At any point S contains the vertices to which the shortest path are known. Initially S only contains the source In each step a vertex is added to S On termination S contains all vertices An array (W) of weights of the shortest path through S known to each vertices is maintained: Initial W is set to the first row of the adjacency matrix W is adjusted as new vertices are added to S At each step a vertex (u) with minimum weight in W and not in S is selected and added to S: For every vertex not in S check, if it is cheaper to get to them through u. If this is the case, adjust W accordingly.