B. Idea: Like DFID except:
ii. Cutoff based on f, not just g
iii. Can increase cutoff by > 1 per iteration
B. Example 2
DF-Aux(Node, Cutoff)
if f(Node) > Cutoff then return f(Node)
if solution(Node) then return Node
Min =
for each Child of Node do
Temp = DF-Aux(Child, Cutoff)
if solution(Temp) then return Temp
if Temp < Min then Min = Temp
return Min
IDA*(Root)
Cutoff = h(Root)
loop
Temp = DF-Aux(Root, Cutoff)
if solution(Temp) then return Temp
if Temp = then return failure
Cutoff = Temp
O(D) or O(BD) space
Problem: how to prevent repeats of previous nodes? (Check parent? Check all ancestors?) How to quantify the time penalty? [Open Question for non-ancestors] E.g.: 
'Foo º 'Foo
'(A ,B C) º (list 'A B 'C)
(setq A '(Foo Bar))
'(A ,A ,@A) --> (A (Foo Bar) Foo Bar)
º (append (list 'A) (list A) A)
'(,@(remove-if #'numberp Expression)
,(apply (first Expression) (remove-if-not #'numberp Expression)))