Algorithm 1.
Fast algorithm to find a Hamiltonian loop.
| for i in range(m): //row |
| //x direction communication distance |
| dx[i][0] = 1 if i == 0 else 0 |
| //y direction communication distance |
| dy[i][0] = 0 if i == 0 else -1 |
| if n == 2: |
| dx[i][n - 1] = -1 if i == m-1 else 0 |
| dy[i][n - 1] = -1 if i == m-1 else 0 |
| else: |
| dx[i][n - 1] = 0 if i % 2 ==0 else -1 |
| dy[i][n - 1] = 1 if i % 2 ==0 else 0 |
| for j in range(1,n-1): //column |
| if j = =1 and i != m - 1: |
| dx[i][j] = 1 if i % 2 ==0 else 0 |
| dy[i][j] = 0 if i % 2 ==0 else 1 |
| else: |
| dx[i][j] = 1 if i % 2 ==0 else 1 |
| dy[i][j] = 0 |