I cant seem to get around the reason why A* outperforms IDA* most of the time. My proffessor has said that the reason is not because of the fact that the early(closer to root) nodes keep been reexplored as IDA* backtracks after reaching the f-limit but rather because because A* maintains an open and closed list so that a given state isnt explored multiple times through the tree whereas in IDA* if there are multiple paths to a given node in the tree, it will explore those nodes again and again. My question is it the same with IDA* ie. isnt it possible to implement IDA* with an open and closed list and if not why?
I'm not sure you completely understand IDA*. IDA* uses repeated limited depth depth-first-searches to reduce the memory requirement associated with A* (where A* normally uses more of a breadth-first-search (BFS)-like process).
If you modify IDA* to use an open and closed list, you'll probably go back to the BFS-like process, so you'll essentially be back to A*.