Which are good algorithms for finding Hamiltonian path (not necessarily a circle) up to now? I am not expertise in graph theory. So have to ask this question here. The term "good" means that the algorithms should be efficient for general undirected simple connected graphs with a higher success probability. 
I also read the question Efficient Hamiltonian cycle algorithms for graph classes.
But it does answer my concern.
 A: The Hamiltonian path problem is NP-complete in general, so only heuristics could exist if P≠NP.
The rotation-extension heuristic may be the simplest heuristic: 
Input: undirected graph G with size n
Let P be a path
Let e be a random edge of G
P:=[e]
Loop:
    If Extension(G,P)≠∅:
        P:=Extension(G,P)
        Goto Loop
    Let Π be the family of the Posa extensions¹ of P in G
        For π in Π:
            If Extension(G,π)≠∅:
                P:=Extension(G,π)
                Goto Loop
    {Remark: The heuristic is not able to extend the path, so we must stop}
     If P is a hamiltonian path, return P, otherwise stop without returning anything.

Subprocedure: Extension
Input: undirected graph G and a path P⊆G
    For x in vertices of G:
        if x is connected with one of P's endpoints p:
            Return P+(p,x)
    Return ∅

1: as defined in https://www.sciencedirect.com/science/article/pii/S0012365X06005097

In other words, the program finds extensions and extensions after rotations until there're none, and return a hamiltonian path if there is one.
For more sophiscated heuristics, one can use methods from the Flinders Hamiltonian Cycle Project. 
