What Are the Two Types of Memory-Bounded Heuristic Algorithms?
Memory-bounded heuristic search algorithms are designed for cases where classic best-first methods (notably ) can require exponential memory due to their maintenance of frontier structures like OPEN/CLOSED. A common framing is that memory-bounded heuristic algorithms come in two broad types:
-
Frontier/graph-style memory bounding (best-first with pruning or node deletion), where the algorithm still behaves like best-first search but enforces a hard cap on stored nodes and deletes “least promising” nodes when memory is full (often described via OPEN/CLOSED limits and pruning from OPEN). This family includes approaches related to SMA* and other memory-bounded variants that “prune the OPEN list by removing the leaf-node with highest -cost” when space is exhausted. 2
-
Depth-first with iterative deepening / linear-space bounds (recursive or repeated deepening strategies), where the algorithm limits memory by re-running depth-first searches under a growing cutoff (e.g., cutoff based on ), so memory stays linear in the search depth. This family includes IDA*, which performs depth-first search and “cuts off a branch when its total cost exceeds a given threshold,” increasing the threshold across iterations.
These two types reflect a fundamental design choice:
- Type A: keep best-first guidance but truncate the stored frontier. 2
- Type B: keep depth-first memory usage but re-explore under a changing bound/cutoff. 2
Footnotes
-
A Memory-Bounded Best-First Beam Search and Its ... - Describes memory-bounded best-first search: bounded storage for CLOSED∪OPEN; deletion on OPEN when limit reached. ↩ ↩2
-
Efficient memory-bounded search methods (Russell) - Describes SMA*: when OPEN/CLOSED reaches a preset limit, prune OPEN by removing the leaf-node with highest -cost. ↩ ↩2
-
Iterative deepening A - Defines IDA*: depth-first search with cutoff where exceeds a threshold; threshold increases per iteration. ↩ ↩2
-
Recursive Best-First Search / linear-space best-first search (Korf 1993) - Background for linear-space best-first search family related to depth-first/cutoff memory bounding. ↩
Memory-bounded heuristic search algorithms (IDA*, RBFS, SMA*)
To reason precisely about the “two types,” it helps to connect them to what each algorithm chooses not to keep:
keyword
The set of generated-but-not-fully-expanded states (or nodes) waiting to be processed—commonly represented by OPEN (and sometimes CLOSED) in best-first and -like algorithms. In memory-bounded best-first methods, the frontier is intentionally truncated when it exceeds a limit.
keyword
The data structure holding candidate nodes for expansion in best-first search; memory-bounded variants delete nodes from OPEN when storage runs out.
keyword
In iterative deepening variants like IDA*, a bound on that determines whether to prune a branch during depth-first traversal.
keyword
Memory that grows proportionally to depth rather than frontier size; achieved by depth-first/cutoff methods like IDA*. 2
Footnotes
-
A Memory-Bounded Best-First Beam Search and Its ... - Describes memory-bounded best-first search: bounded storage for CLOSED∪OPEN; deletion on OPEN when limit reached. ↩ ↩2
-
Iterative deepening A - Defines IDA*: depth-first search with cutoff where exceeds a threshold; threshold increases per iteration. ↩ ↩2
-
Depth-First Iterative-Deepening: An Optimal Admissible Tree Search (Korf 1985) - Original IDA* description: DFS with cutoff and iterative thresholds; discusses memory vs time behavior. ↩
How each memory-bounded type enforces a memory limit
- 1Step 1
Maintain best-first OPEN/CLOSED-like structures, but set a maximum size; when reached, delete/prune “worst” OPEN nodes (e.g., highest -cost leaves) to free memory. 2
Footnotes
-
A Memory-Bounded Best-First Beam Search and Its ... - Describes memory-bounded best-first search: bounded storage for CLOSED∪OPEN; deletion on OPEN when limit reached. ↩
-
Efficient memory-bounded search methods (Russell) - Describes SMA*: when OPEN/CLOSED reaches a preset limit, prune OPEN by removing the leaf-node with highest -cost. ↩
-
- 2Step 2
Run depth-first search while pruning branches whose exceeds a threshold; start with an initial threshold and increase it across iterations. This keeps memory low because DFS stores only a path plus local recursion.
Footnotes
-
Iterative deepening A - Defines IDA*: depth-first search with cutoff where exceeds a threshold; threshold increases per iteration. ↩
-
- 3Step 3
Type 1 tends to re-use stored nodes but can lose completeness/optimality guarantees when pruning removes crucial states; Type 2 uses minimal memory but may re-expand nodes across iterations (time increases). Both are used to avoid the exponential memory blow-up of classic best-first search. 2
Footnotes
-
Iterative deepening A - Defines IDA*: depth-first search with cutoff where exceeds a threshold; threshold increases per iteration. ↩
-
A Memory-Bounded Best-First Beam Search and Its ... - Describes memory-bounded best-first search: bounded storage for CLOSED∪OPEN; deletion on OPEN when limit reached. ↩
-
Type 1: Memory-bounded best-first search (bounded OPEN/CLOSED; pruning/deletion)
In a best-first search view, each iteration selects the node with lowest (best) -value from OPEN, expands it, and updates OPEN/CLOSED. A memory-bounded variant introduces a maximum storage limit for OPEN (and sometimes CLOSED), such that when the limit is reached, node deletion must be performed on OPEN.
A representative description appears in memory-bounded A*-like methods: when OPEN/CLOSED hits a preset limit, the algorithm “begins to prune the OPEN list by removing the leaf-node with highest -cost.”
This design yields a spectrum of behaviors:
- With sufficiently large memory, the algorithm can emulate -like behavior.
- With smaller memory, it behaves like best-first search over a partially remembered frontier, relying on pruning to fit into memory.
[CalloutBlock] type="tip" title="Key mental model (Type 1)" content="If you remember only the “most useful” frontier nodes, you can keep best-first guidance—but you must delete nodes when memory is full."
[CalloutBlock] type="warning" title="Key risk (Type 1)" content="Deleting nodes from OPEN can remove information required to guarantee completeness/optimality under tight memory, because the algorithm no longer has the full frontier it would otherwise need to backtrack/reconstruct the best path."
Footnotes
-
A Memory-Bounded Best-First Beam Search and Its ... - Describes memory-bounded best-first search: bounded storage for CLOSED∪OPEN; deletion on OPEN when limit reached. ↩ ↩2
-
Efficient memory-bounded search methods (Russell) - Describes SMA*: when OPEN/CLOSED reaches a preset limit, prune OPEN by removing the leaf-node with highest -cost. ↩
Type 2: Depth-first iterative deepening / recursive bounds (linear-space)
Iterative deepening A* (IDA*) is a standard example of the second type. It uses a depth-first traversal, but replaces the “fixed depth” cutoff of IDDFS with a heuristic-informed cutoff on .
Concretely, IDA* works by:
- performing DFS,
- cutting off a branch when exceeds the current threshold,
- starting with a threshold and increasing it for subsequent iterations.
This achieves bounded memory because DFS keeps only the current path (plus recursion state), not the entire frontier. A key consequence is that time can increase due to re-exploration across increasing thresholds (nodes may be revisited under different thresholds). 2
keyword
IDA* is a depth-first iterative-deepening variant that prunes using thresholds.
[CalloutBlock] type="tip" title="Key mental model (Type 2)" content="You trade memory for repeated work: keep only a DFS stack, and refine the allowed -cost range over iterations."
Footnotes
-
Iterative deepening A - Defines IDA*: depth-first search with cutoff where exceeds a threshold; threshold increases per iteration. ↩ ↩2 ↩3
-
Depth-First Iterative-Deepening: An Optimal Admissible Tree Search (Korf 1985) - Original IDA* description: DFS with cutoff and iterative thresholds; discusses memory vs time behavior. ↩
Two memory-bounded types: what they bound
High-level comparison of the main structure each type constrains.
Common algorithm patterns within the two types
Type 1 (bounded best-first)
Core conceptBest-first guidance, but enforce a hard limit on OPEN/CLOSED and prune/delete when full. 2"
Footnotes
-
A Memory-Bounded Best-First Beam Search and Its ... - Describes memory-bounded best-first search: bounded storage for CLOSED∪OPEN; deletion on OPEN when limit reached. ↩
-
Efficient memory-bounded search methods (Russell) - Describes SMA*: when OPEN/CLOSED reaches a preset limit, prune OPEN by removing the leaf-node with highest -cost. ↩
Memory-bounded A*-like methods
Example familyPrune OPEN using -cost criteria (e.g., remove highest- leaf when memory saturates). "
Footnotes
-
Efficient memory-bounded search methods (Russell) - Describes SMA*: when OPEN/CLOSED reaches a preset limit, prune OPEN by removing the leaf-node with highest -cost. ↩
Type 2 (iterative deepening DFS)
Core conceptDepth-first search with heuristic cutoff , increasing the threshold across iterations. "
Footnotes
-
Iterative deepening A - Defines IDA*: depth-first search with cutoff where exceeds a threshold; threshold increases per iteration. ↩
IDA* (linear-space analog)
Example familyRuns repeated DFS with cutoff thresholds, limiting memory usage to depth. 2"
Footnotes
-
Iterative deepening A - Defines IDA*: depth-first search with cutoff where exceeds a threshold; threshold increases per iteration. ↩
-
Depth-First Iterative-Deepening: An Optimal Admissible Tree Search (Korf 1985) - Original IDA* description: DFS with cutoff and iterative thresholds; discusses memory vs time behavior. ↩
Common questions about the two types
Knowledge Check
In the two-type classification of memory-bounded heuristic algorithms, which type keeps best-first guidance but enforces a hard cap on stored frontier nodes (e.g., deleting from OPEN)?
Explore Related Topics
Design and Analysis of Algorithms (DAA)
Breadth-First Search as an Uninformed Search Strategy
Breadth‑First Search (BFS) expands the shallowest frontier nodes first using a FIFO queue and does not employ any heuristic function, making it an uninformed (blind) search strategy.
- Classified as uninformed search because it relies only on the problem definition, not on or other estimates.
- Complete for finite branching factors and optimal when all step costs are equal.
- Tree‑search time and space are ; graph‑search runs in time and space.
- Main weakness is exponential memory growth, so it suits shallow goals with ample memory.
- If step costs vary, uniform‑cost search should be used instead of BFS.
Differences Between Leaky Bucket and Token Bucket Algorithms (Traffic Shaping vs Rate Limiting)