I have some trouble understanding some of the algorithms for searching, used in AI (artificial intelligence).

What is the exact difference between

__A*__and__IDA* (Iterative Deeping A Star)__? Is it just the heuristic function? If so, I still just can't imagine how IDA* works.. :/Is

**IDA***the same as__BFS (Breadth-First search)__(when the depth of expanding is just 1 level, I mean - moving just one by one level "down", is there any difference between**IDA***and**BFS**)Is

__IDDFS (Iterative-Deeping Depth-First Search)__the same as**IDA***, except the heuristic function (which is equivalent to 0 in**IDDFS**)What exactly is

**IDDFS**- moving down**just one**level, then using__DFS (Depth-First Search)__? If so, this way lots of the states are calculated (expanded) much more than ones... Or it's like this - use**DFS**with particular depth, then store the "leaves" (the last expanded nodes), and iterate through them to use**DFS**again (which, actually, is**BFS**?)Where "

*iterative*" come from? As I see,**IDDFS**is not iterative at all, it's still recursive, just mixes**BFS**and**DFS**? Or I'm wrong? Or this "*iterative*" has nothing to do with the opposite of recursion?What is "

*iterative*" for**IDA *?**

Could you, please, provide some examples? I read all day about these algorithms, I know their advantages and disadvantages, the complexity, etc., but I just couldn't find any good examples (except for A*; I know BFS and DFS, the others bother me). I found some pseudo-code for IDA* in different places, but they were all completely different.

Examples would be the best way to understand algorithms..but I can't find. Even in __TopCoder,__ I didn't find anything about IDA*.

I've read the wiki articles and I'm looking for something new (:

Thanks a lot!