• The Königsberg bridge problem (HSM Ch.6.1.1, Fig.6.1)

• Graphs (HSM Ch.6.1)
• Definition (HSM Ch.6.1.2, Fig.6.2-3)
• Applications
• Mimimal cost communication networks
• Project planning
• The travelling salesman
• Natural language processing (Check out Altavista'a translation page)
• Circuit layouts
• Terminology (HSM Ch.6.1.2, Fig.6.2-5)
• Graphs and digraphs (HSM Fig.6.2)
• Complete graphs (HSM Fig.6.2a)
• Edges in a complete graph = n(n-1)/2
• Edges = Sum(degree) / 2
• Subgraphs (HSM Fig.6.4)
• Paths, cycles, and trees
• Other types of graphs
• Hypergraphs have edges with multiple ends
• Loops
• Multigraphs

• Graph Representation (HSM Ch.6.1.3)
• Adjacency matrices (HSM Ch.6.1.3.1, Fig.6.7)
• Space is O(n2), even taking advantage of symmetry
• Some simple algorithms are O(n), most algorithms are O(n2)
• Sparse graph algorithms should take at most O(n+e)
• Adjacency lists (HSM Ch.6.1.3.2, Fig. 6.8)
• Space is O(n+e)
• Some simple algorithms are O(vertex degree), most algorithms are O(n+e)
• For directed graphs, some simple algorithms become O(n+e) instead of O(vertex degree)
• Inverted adjacency lists (HSM Fig.6.10)
• For directed graphs, edges incident to are needed
• Adjacency multilists (HSM Ch.6.1.3.3, Fig.6.12)
• For undirected graphs
• Solve the problem of multiple edge representation
• Space is O(n+e)
• Some simple algorithms are O(vertex degree), most algorithms are O(n+e)
• Orthogonal adjacency lists (HSM Fig.6.11)
• For directed graphs
• Space is O(n+e)
• Some simple algorithms are O(vertex degree), most algorithms are O(n+e)
• Weighted edges (HSM Ch.6.1.3.4)

• The LEDA Library
• The LEDA manual
• Compilation is sensitive. Use this pattern:
`g++ YourCode.cpp -I/mnt/disk1/LEDA-3.8a/incl -L/mnt/disk1/LEDA-3.8a -lG -lL `

## Exercises

• Graphs: HSM Ch.6.1, exercise 1-2.
• Graph Representation: HSM Ch.6.1, exercise 5-6.