Hristian Hristov Telerik Corporation
1. Dijkstra algorithm 2. Greedy search 3. A* Heuristics Admissible heuristics Consistent heuristic 4. Additional information 2
Short Revision
Uninformed search - We do not know where the goal is! - Guaranteed to find the goal!
Short explanation 1. Start from a certain state and add onto fringe 2. Pop the state with highest priority from the fringe, mark as used and add its unmarked successors to the fringe 3. If fringe is empty - end the algorithm, else go to step 2 Complexity – O(nlogn) 5
6
We are informed for the goal Use some greedy function to reach the goal Does NOT always work!
Short explanation For the labyrinth example: 1. Start from certain state 2. Move towards the goal minimizing the Manhattan distance. 3. If cannot move – end algorithm, else go to step 2
Why not mixing greedy and Dijkstra? 12
How to mix them? - Hello heuristic functions! -admissible heuristics - consistant heuristics 13
What is a heuristic? 14
Some interesting values for graph search h(n) – heuristic of state n C(n) – actual minimum cost from n g(n) – cost to current state from start f(n) – evaluation function c(n, p) – edge between states n and p f(n) = g(n) + h(n) 15
Admissible heuristics for every state n: C(n) >= f(n) 16
Consistent heuristic for every n and its successor a: h(n) <= c(n, a) + h(a) and h(goal)=O 17
Let’s use the heuristics! - Basically same idea as Dijkstra - Instead of the distance travelled we use the heuristics - Heuristics should be admissible and consistent 18
Pseudocode 1. Push start state with its heuristics onto the fringe 2. While fringe is not empty or goal is not reached: - Pop highest-priority state from the fringe - Push its non-visited successors onto the fringe calculating their heuristics and mark current state as parent 3. Print the path if needed 19
Live demo
Dijkstra ALgorithms: “Programming = ++Algorithms” by P. Nakov; hm hm hm Heuristics: tic tic tic tic tic tic 21
форум програмиране, форум уеб дизайн курсове и уроци по програмиране, уеб дизайн – безплатно програмиране за деца – безплатни курсове и уроци безплатен 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, PhoneGap free C# book, безплатна книга C#, книга Java, книга C# Николай Костов - блог за програмиране
“C# Telerik Academy csharpfundamentals.telerik.com csharpfundamentals.telerik.com Telerik Software Academy academy.telerik.com academy.telerik.com Telerik Facebook facebook.com/TelerikAcademy facebook.com/TelerikAcademy Telerik Software Academy Forums forums.academy.telerik.com forums.academy.telerik.com