So, I would like to start from the readme: I think is really good and explains in a very clear way your implementation. About the greedy one it is quite direct and respect the Greedy theory.
For the depth first, the explaination is very detailed and I quite appreaciated it.
The A*, as you said, it is inspired by the professor code, I think you changed the heuristics based on the problem you were facing.
Let's move to the code: the code of the Greedy one is quite intuitive, also because it is commented. The only doubt that I have is about the varible num, I think is some sort of counter in order to understand if the node has been visited or not.
The code of the depth first is clear. Also because it is explained step by step (or almost) on your description, so it is very easy to follow.
About the A* the only thing that I feel I can say is that has some lack of comments. Also I think that the heuristics may not be optimal.
About the trade-off weights/visited nodes is a bit high on the A*, as I said it because of the heuristic that maybe is not optimal. For the Depth first instead, it starts good but increase a bit when N=10; but after that seems to stabilize. Maybe you can think about a different heuristic or an optimization.
Overall, I think you did a good job. The only improvements I feel I can say is that you might want to develop a function for the A* as you did for the Depth and the Greedy; or you may modify (or, in my opinion, also don't use it) the State class to make it easier; or yet find a different heuristic
Hello,
So, I would like to start from the readme: I think is really good and explains in a very clear way your implementation. About the greedy one it is quite direct and respect the Greedy theory. For the depth first, the explaination is very detailed and I quite appreaciated it. The A*, as you said, it is inspired by the professor code, I think you changed the heuristics based on the problem you were facing.
Let's move to the code: the code of the Greedy one is quite intuitive, also because it is commented. The only doubt that I have is about the varible
num
, I think is some sort of counter in order to understand if the node has been visited or not. The code of the depth first is clear. Also because it is explained step by step (or almost) on your description, so it is very easy to follow. About the A* the only thing that I feel I can say is that has some lack of comments. Also I think that the heuristics may not be optimal.About the trade-off weights/visited nodes is a bit high on the A*, as I said it because of the heuristic that maybe is not optimal. For the Depth first instead, it starts good but increase a bit when N=10; but after that seems to stabilize. Maybe you can think about a different heuristic or an optimization.
Overall, I think you did a good job. The only improvements I feel I can say is that you might want to develop a function for the A* as you did for the Depth and the Greedy; or you may modify (or, in my opinion, also don't use it) the State class to make it easier; or yet find a different heuristic