A more efficient way of finding Hamiltonian cycle
In order to find Hamiltonian cycle, algorithm should find edges that creates a Hamiltonian cycle. Higher number of edges creates more possibilities to check to solve the problem. Algorithm rests on analysis of original graph and opposite graph to it. Algorithm can remove unnecessary edges from graph and test when Hamiltonian cycle can't exist in graph. Algorithm prefers "to think over" which paths should be checked than check many wrong paths.