  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.
