public static void a_star_backwards(Floatarray costs_for_all_nodes, IGenericFst fst)
{
IGenericFst reverse = FstFactory.MakeOcroFST();
FstUtil.fst_copy_reverse(reverse, fst, true); // creates an extra vertex
AStarSearch a = new AStarSearch(reverse);
a.Loop();
costs_for_all_nodes.Copy(a.g);
costs_for_all_nodes.Pop(); // remove the extra vertex
}