Hamiltonian Cycle
description
Transcript of Hamiltonian Cycle
Hamiltonian Cycle
Penka BorukovaStudent at Telerik
Academy
Table of Contents
1. History2. Hamiltonian Cycle3. Hamiltonian Graph4. Travelling salesman
2
History
History Invented by William Rowan Hamilton in 1859
Icosian game = Hamilton’s puzzle Finding Hamiltonian cycle in
dodecahedron
4
Hamiltonian Cycle Definition
Hamiltonian Cycle Hamiltonian path is a path in a graph that visits each vertex exactly once
Hamiltonian cycle is a cycle in a graph that visits each vertex exactly once
Hamiltonian path/cycle problem – determining if Hamiltonian path/cycle exists
Both are NP-complete6
Hamiltonian Graph Definition
Hamiltonian Graph Hamiltonian graph is a graph that has Hamiltonian cycle
Complexity for finding Hamiltonian cycle – O(n!)
Works for less than 50 vertices
8
Hamiltonian Graph (2) Possibility for Hamiltonian graph
Complete graph – 100% Almost complete graph – high
possibility Less edges => less possibility
9
Hamiltonian Graph (3) Examples
Complete graph Cycle graph Platonic solid Prism Maximal planar graph Tournament – odd number
Hamiltonian paths
10
Let’s find Hamiltonian cycle
Herschel graph
11
Hamiltonian Graph (4)public static void HamiltonianCycle(Node node, int level, List<Node> pathSoFar) { if (level == nodesCount) { foreach (Node neighbor in node.Neighbors) { if (neighbor == startNode) { List<Node> p = new List<Node>();
p.AddRange(pathSoFar);p.Add(startNode);cycles.Add(p);
} } return; }
12
Hamiltonian Graph (5) for (int i = 0; i < node.Neighbors.Count; i++) { if (!node.Neighbors[i].Visited) { node.Neighbors[i].Visited = true; pathSoFar.Add(node.Neighbors[i]); HamiltonianCycle(node.Neighbors[i], level + 1, pathSoFar); pathSoFar.Remove(node.Neighbors[i]); node.Neighbors[i].Visited = false; } }}
13
Live Demo
Travelling Salesman Problem
Travelling Salesman Finding Hamiltonian cycle with minimal cost
Also NP-complete Heuristics
Greedy Pairwise exchange Randomized improvement
16
Live Demo
форум програмиране, форум уеб дизайнкурсове и уроци по програмиране, уеб дизайн – безплатно
програмиране за деца – безплатни курсове и уроцибезплатен SEO курс - оптимизация за търсачки
уроци по уеб дизайн, HTML, CSS, JavaScript, Photoshop
уроци по програмиране и уеб дизайн за ученициASP.NET MVC курс – HTML, SQL, C#, .NET, ASP.NET MVC
безплатен курс "Разработка на софтуер в cloud среда"
BG Coder - онлайн състезателна система - online judge
курсове и уроци по програмиране, книги – безплатно от Наков
безплатен курс "Качествен програмен код"
алго академия – състезателно програмиране, състезанияASP.NET курс - уеб програмиране, бази данни, C#, .NET, ASP.NET
курсове и уроци по програмиране – Телерик академия
курс мобилни приложения с iPhone, Android, WP7, PhoneGapfree C# book, безплатна книга C#, книга Java, книга C# Дончо Минков - сайт за програмиране
Николай Костов - блог за програмиранеC# курс, програмиране, безплатно
?? ? ?
??? ?
?
? ?
??
?
?
? ?
Questions?
?
Hamiltonian Cycle
http://algoacademy.telerik.com
Resources Nakov’s book: Programming = ++Algorithms;
http://en.wikipedia.org/wiki/Hamiltonian_path
http://neohumanism.org/h/ha/hamiltonian_path.html
http://en.wikipedia.org/wiki/Travelling_salesman_problem
http://en.wikipedia.org/wiki/Herschel_graph
19
Free Trainings @ Telerik Academy
“C# Programming @ Telerik Academy csharpfundamentals.telerik.com
Telerik Software Academy academy.telerik.com
Telerik Academy @ Facebook facebook.com/TelerikAcademy
Telerik Software Academy Forums forums.academy.telerik.com 20