Malte Helmert
University of Basel
March 29, 2021
State-Space Search: Overview
Chapter overview: state-space search 5.–7. Foundations
8.–12. Basic Algorithms 13.–19. Heuristic Algorithms
13. Heuristics
14. Analysis of Heuristics 15. Best-first Graph Search
16. Greedy Best-first Search, A ∗ , Weighted A ∗ 17. IDA ∗
18. Properties of A ∗ , Part I
19. Properties of A ∗ , Part II
Introduction
What Is It About?
In this chapter we study last chapter’s algorithms in more detail:
greedy best-first search A ∗
weighted A ∗
Greedy Best-first Search
Greedy Best-first Search
Greedy Best-first Search
only consider the heuristic: f (n) = h(n.state)
Note: usually without reopening (for reasons of efficiency)
Giurgiu
Urziceni Hirsova
Eforie Neamt
Oradea
Zerind Arad
Timisoara Lugoj
Mehadia
Dobreta
Craiova Sibiu Fagaras
Pitesti
Vaslui Iasi
Rimnicu Vilcea
Bucharest 71
75
118
111 70
75 120 151
140
99 80
97
101 211
138
146 85
90
98 142 92 87
86
Arad
366Bucharest
0Craiova
160Drobeta
242Eforie
161Fagaras
176Giurgiu
77Hirsova
151Iasi
226Lugoj
244Mehadia
241Neamt
234Oradea
380Pitesti
100Rimnicu Vilcea
193Sibiu
253Timisoara
329Urziceni
80Vaslui
199Zerind
374Example: Greedy Best-first Search for Route Planning
Rimnicu Vilcea
Zerind Arad
Sibiu
Arad Fagaras Oradea
Timisoara
Sibiu Bucharest
329 374
366 380 193
253 0
Rimnicu Vilcea Arad
Sibiu
Arad Fagaras Oradea
Timisoara 329
Zerind 374
366 176 380 193
Zerind Arad
Sibiu Timisoara
253 329 374
Arad 366 (a) The initial state
(b) After expanding Arad
(c) After expanding Sibiu
(d) After expanding Fagaras
Rimnicu Vilcea
Zerind Arad
Sibiu
Arad Fagaras Oradea
Timisoara
Sibiu Bucharest
329 374
366 380 193
253 0
Rimnicu Vilcea Arad
Sibiu
Arad Fagaras Oradea
Timisoara 329
Zerind 374
366 176 380 193
Zerind Arad
Sibiu Timisoara
253 329 374
Arad 366 (a) The initial state
(b) After expanding Arad
(c) After expanding Sibiu
(d) After expanding Fagaras
Example: Greedy Best-first Search for Route Planning
Rimnicu Vilcea
Zerind Arad
Sibiu
Arad Fagaras Oradea
Timisoara
Sibiu Bucharest
329 374
366 380 193
253 0
Rimnicu Vilcea Arad
Sibiu
Arad Fagaras Oradea
Timisoara 329
Zerind 374
366 176 380 193
Zerind Arad
Sibiu Timisoara
253 329 374
Arad 366 (a) The initial state
(b) After expanding Arad
(c) After expanding Sibiu
(d) After expanding Fagaras
Rimnicu Vilcea
Zerind Arad
Sibiu
Arad Fagaras Oradea
Timisoara
Sibiu Bucharest
329 374
366 380 193
253 0
Rimnicu Vilcea Arad
Sibiu
Arad Fagaras Oradea
Timisoara 329
Zerind 374
366 176 380 193
Zerind Arad
Sibiu Timisoara
253 329 374
Arad 366 (a) The initial state
(b) After expanding Arad
(c) After expanding Sibiu
(d) After expanding Fagaras
Greedy Best-first Search: Properties
complete with safe heuristics
(like all variants of best-first graph search) suboptimal: solutions can be arbitrarily bad
often very fast: one of the fastest search algorithms in practice monotonic transformations of h (e.g. scaling, additive
constants) do not affect behaviour (Why is this interesting?)
A ∗
A ∗
A ∗
combine greedy best-first search with uniform cost search:
f (n) = g (n) + h(n.state)
trade-off between path cost and proximity to goal
f (n) estimates overall cost of cheapest solution
from initial state via n to the goal
A ∗ : Citations
Giurgiu
Urziceni Hirsova
Eforie Neamt
Oradea
Zerind Arad
Timisoara Lugoj
Mehadia
Dobreta
Craiova Sibiu Fagaras
Pitesti
Vaslui Iasi
Rimnicu Vilcea
Bucharest 71
75
118
111 70
75 120 151
140
99 80
97
101 211
138
146 85
90
98 142 92 87
86
Arad
366Bucharest
0Craiova
160Drobeta
242Eforie
161Fagaras
176Giurgiu
77Hirsova
151Iasi
226Lugoj
244Mehadia
241Neamt
234Oradea
380Pitesti
100Rimnicu Vilcea
193Sibiu
253Timisoara
329Urziceni
80Vaslui
199Zerind
374Example: A ∗ for Route Planning
(a) The initial state (b) After expanding Arad
(c) After expanding Sibiu
Arad
Sibiu Timisoara
447=118+329
Zerind 449=75+374 393=140+253
Arad 366=0+366
(d) After expanding Rimnicu Vilcea
(e) After expanding Fagaras
(f) After expanding Pitesti
Zerind Arad
Sibiu
Arad
Timisoara
Rimnicu Vilcea Fagaras Oradea
447=118+329 449=75+374
646=280+366415=239+176 671=291+380413=220+193
Zerind Arad
Sibiu Timisoara
447=118+329 449=75+374
Rimnicu Vilcea
Craiova Pitesti Sibiu 526=366+160417=317+100553=300+253
Zerind Arad
Sibiu
Arad
Timisoara
Sibiu Bucharest Fagaras Oradea
Craiova Pitesti Sibiu
447=118+329 449=75+374
646=280+366
591=338+253 450=450+0 526=366+160417=317+100553=300+253 671=291+380
Zerind Arad
Sibiu
Arad
Timisoara
Sibiu Bucharest Oradea
Craiova Pitesti Sibiu
Bucharest Craiova Rimnicu Vilcea 418=418+0
447=118+329 449=75+374
646=280+366
591=338+253 450=450+0 526=366+160 553=300+253
615=455+160 607=414+193 671=291+380
Rimnicu Vilcea
Fagaras Rimnicu Vilcea
Arad Fagaras Oradea
646=280+366 415=239+176 671=291+380
(a) The initial state (b) After expanding Arad
(c) After expanding Sibiu
Arad
Sibiu Timisoara
447=118+329
Zerind 449=75+374 393=140+253
Arad 366=0+366
(d) After expanding Rimnicu Vilcea
(e) After expanding Fagaras
(f) After expanding Pitesti
Zerind Arad
Sibiu
Arad
Timisoara
Rimnicu Vilcea Fagaras Oradea
447=118+329 449=75+374
646=280+366415=239+176 671=291+380413=220+193
Zerind Arad
Sibiu Timisoara
447=118+329 449=75+374
Rimnicu Vilcea
Craiova Pitesti Sibiu 526=366+160417=317+100553=300+253
Zerind Arad
Sibiu
Arad
Timisoara
Sibiu Bucharest Fagaras Oradea
Craiova Pitesti Sibiu
447=118+329 449=75+374
646=280+366
591=338+253 450=450+0 526=366+160417=317+100553=300+253 671=291+380
Zerind Arad
Sibiu
Arad
Timisoara
Sibiu Bucharest Oradea
Craiova Pitesti Sibiu
Bucharest Craiova Rimnicu Vilcea 418=418+0
447=118+329 449=75+374
646=280+366
591=338+253 450=450+0 526=366+160 553=300+253
615=455+160 607=414+193 671=291+380
Rimnicu Vilcea
Fagaras Rimnicu Vilcea
Arad Fagaras Oradea
646=280+366 415=239+176 671=291+380
Example: A ∗ for Route Planning
(a) The initial state (b) After expanding Arad
(c) After expanding Sibiu
Arad
Sibiu Timisoara
447=118+329
Zerind 449=75+374 393=140+253
Arad 366=0+366
(d) After expanding Rimnicu Vilcea
(e) After expanding Fagaras
(f) After expanding Pitesti
Zerind Arad
Sibiu
Arad
Timisoara
Rimnicu Vilcea Fagaras Oradea
447=118+329 449=75+374
646=280+366415=239+176 671=291+380413=220+193
Zerind Arad
Sibiu Timisoara
447=118+329 449=75+374
Rimnicu Vilcea
Craiova Pitesti Sibiu 526=366+160417=317+100553=300+253
Zerind Arad
Sibiu
Arad
Timisoara
Sibiu Bucharest Fagaras Oradea
Craiova Pitesti Sibiu
447=118+329 449=75+374
646=280+366
591=338+253 450=450+0 526=366+160417=317+100553=300+253 671=291+380
Zerind Arad
Sibiu
Arad
Timisoara
Sibiu Bucharest Oradea
Craiova Pitesti Sibiu
Bucharest Craiova Rimnicu Vilcea 418=418+0
447=118+329 449=75+374
646=280+366
591=338+253 450=450+0 526=366+160 553=300+253
615=455+160 607=414+193 671=291+380
Rimnicu Vilcea
Fagaras Rimnicu Vilcea
Arad Fagaras Oradea
646=280+366 415=239+176 671=291+380
(a) The initial state (b) After expanding Arad
(c) After expanding Sibiu
Arad
Sibiu Timisoara
447=118+329
Zerind 449=75+374 393=140+253
Arad 366=0+366
(d) After expanding Rimnicu Vilcea
(e) After expanding Fagaras
(f) After expanding Pitesti
Zerind Arad
Sibiu
Arad
Timisoara
Rimnicu Vilcea Fagaras Oradea
447=118+329 449=75+374
646=280+366415=239+176 671=291+380413=220+193
Zerind Arad
Sibiu Timisoara
447=118+329 449=75+374
Rimnicu Vilcea
Craiova Pitesti Sibiu 526=366+160417=317+100553=300+253
Zerind Arad
Sibiu
Arad
Timisoara
Sibiu Bucharest Fagaras Oradea
Craiova Pitesti Sibiu
447=118+329 449=75+374
646=280+366
591=338+253 450=450+0 526=366+160417=317+100553=300+253 671=291+380
Zerind Arad
Sibiu
Arad
Timisoara
Sibiu Bucharest Oradea
Craiova Pitesti Sibiu
Bucharest Craiova Rimnicu Vilcea 418=418+0
447=118+329 449=75+374
646=280+366
591=338+253 450=450+0 526=366+160 553=300+253
615=455+160 607=414+193 671=291+380
Rimnicu Vilcea
Fagaras Rimnicu Vilcea
Arad Fagaras Oradea
646=280+366 415=239+176 671=291+380
Introduction Greedy Best-first Search A
∗Weighted A
∗Summary
Example: A ∗ for Route Planning
(b) After expanding Arad
(c) After expanding Sibiu
Arad
Sibiu Timisoara
447=118+329
Zerind 449=75+374 393=140+253
(d) After expanding Rimnicu Vilcea
(e) After expanding Fagaras
(f) After expanding Pitesti
Zerind Arad
Sibiu
Arad
Timisoara
Rimnicu Vilcea Fagaras Oradea
447=118+329 449=75+374
646=280+366415=239+176 671=291+380413=220+193
Zerind Arad
Sibiu Timisoara
447=118+329 449=75+374
Rimnicu Vilcea
Craiova Pitesti Sibiu 526=366+160417=317+100553=300+253
Zerind Arad
Sibiu
Arad
Timisoara
Sibiu Bucharest Fagaras Oradea
Craiova Pitesti Sibiu
447=118+329 449=75+374
646=280+366
591=338+253 450=450+0 526=366+160417=317+100553=300+253 671=291+380
Zerind Arad
Sibiu
Arad
Timisoara
Sibiu Bucharest Oradea
Craiova Pitesti Sibiu
Bucharest Craiova Rimnicu Vilcea 418=418+0
447=118+329 449=75+374
646=280+366
591=338+253 450=450+0 526=366+160 553=300+253
615=455+160 607=414+193 671=291+380
Rimnicu Vilcea
Fagaras Rimnicu Vilcea
Arad Fagaras Oradea
646=280+366 415=239+176 671=291+380
Introduction Greedy Best-first Search A
∗Weighted A
∗Summary
Example: A ∗ for Route Planning
(c) After expanding Sibiu
(d) After expanding Rimnicu Vilcea
(e) After expanding Fagaras
(f) After expanding Pitesti
Zerind Arad
Sibiu
Arad
Timisoara
Rimnicu Vilcea Fagaras Oradea
447=118+329 449=75+374
646=280+366415=239+176 671=291+380413=220+193
Zerind Arad
Sibiu Timisoara
447=118+329 449=75+374
Rimnicu Vilcea
Craiova Pitesti Sibiu 526=366+160417=317+100553=300+253
Zerind Arad
Sibiu
Arad
Timisoara
Sibiu Bucharest Fagaras Oradea
Craiova Pitesti Sibiu
447=118+329 449=75+374
646=280+366
591=338+253 450=450+0 526=366+160417=317+100553=300+253 671=291+380
Zerind Arad
Sibiu
Arad
Timisoara
Sibiu Bucharest Oradea
Craiova Pitesti Sibiu
Bucharest Craiova Rimnicu Vilcea 418=418+0
447=118+329 449=75+374
646=280+366
591=338+253 450=450+0 526=366+160 553=300+253
615=455+160 607=414+193 671=291+380
Rimnicu Vilcea
Fagaras Rimnicu Vilcea
Arad Fagaras Oradea
646=280+366 415=239+176 671=291+380