Olá, Caina!
Muito obrigado pela sua pergunta. É uma excelente observação, e mostra que você está pensando de forma crítica sobre a aplicação do algoritmo, o que é fundamental para um bom engenheiro de software.
Para o algoritmo A*, o melhor caminho não é necessariamente o de menor custo total no final, mas sim aquele que, a cada iteração, tem a menor soma de f(n) = g(n) + h(n), onde:
Você está correto ao dizer que em um primeiro momento o caminho A -> B pode parecer mais vantajoso, mas é preciso analisar todos os passos da expansão do A*.
O algoritmo A* explora os nós com base na menor f(n). Se a soma dos custos (g(n) e h(n)) do caminho A -> B -> C for menor do que a do caminho A -> C em algum momento da exploração, o A* vai seguir por esse caminho. Pode ser que o custo real (g(n)) de A -> B seja pequeno, e a heurística (h(n)) de B -> C também seja baixa, fazendo com que a soma f(n) do caminho A -> B seja mais atrativa inicialmente, e ele continue por ali.
Se a solução apresentada no curso está em conflito com o seu entendimento, pode haver três motivos:
A heurística (h(n)) não é admissível: Uma heurística admissível nunca superestima o custo real até o objetivo. Se a heurística usada no curso superestimou o custo de A -> C em algum ponto, o A* pode ter sido levado a escolher um caminho não ideal.
A implementação do A possui um erro:* É possível que o código tenha alguma falha.
A minha interpretação do problema está incorreta: Precisaria rever os valores de g(n) e h(n) para cada passo do algoritmo para confirmar qual caminho realmente seria o de menor custo.
O seu raciocínio está correto, e é o cerne do funcionamento do A*. A melhor forma de tirar a dúvida é refazendo a simulação do algoritmo passo a passo, calculando f(n) para cada nó expandido, para ver se os valores da solução do curso se sustentam. Se você puder compartilhar os valores de g(n) e h(n) usados no exemplo do instrutor, eu posso te ajudar a verificar.