기사의 여행
기사의 여행은 체스보드의 나이트에 대한 수학적인 알고리즘 문제의 일종이다. 체스 피스를 움직이는 규칙에 따라 나이트를 모든 칸으로 정확히 한 번씩 갈 수 있도록 하는 방법을 찾는 문제이다. 이 문제의 해법은 수없이 많다. 기사가 마지막 위치에 가서 첫 번째 위치로 공격을 할 수 있는 상태가 되면 여행이 닫혀 있다고 하고, 그렇지 않으면 여행이 열려 있다고 한다.
레온하르트 오일러를 비롯한 많은 수학자들이 이 문제의 다양한 변형에 대하여 연구하였다. 예를 들어 다음과 같은 다양한 변형 문제가 있다.
- 체스판의 크기가 다른 문제
- 두 명의 선수가 경기를 하는 경우를 다룬 문제
- 기사가 움직이는 방법을 조금 다르게 한 문제
이론
기사의 여행 문제는 그래프 이론에서 NP-완전인 해밀턴 경로 문제의 특별한 경우이다. 닫힌 기사의 여행 문제 역시 해밀턴 순환 문제의 예시이다. 일반적인 다른 해밀턴 경로 문제들과 달리 선형 시간 안에 해결 가능하다.
역사
기사의 여행 문제에 대한 알려진 가장 오래된 언급은 9세기까지 거슬러간다. 루드라타의 산스크리트 시학 작품인 카비아랑카라에서(5.15), 체스판의 절반 크기 보드에서 기사의 여행 패턴이 정교한 시적 장식(citra-alaṅkāra)으로 제시되었으며, 이는 투라가파다반다 또는 '말의 발걸음 배열'이라 불린다.
이 구절은 각각 8음절로 이루어진 네 개의 행으로 구성되어 있으며, 왼쪽에서 오른쪽으로 읽을 수도 있고, 기사 이동 경로를 따라 읽을 수도 있다. 산스크리트어에 사용되는 인도 계열 문자 체계는 음절 기반이므로, 각 음절이 체스판의 한 칸을 나타낸다고 볼 수 있다.
루드라타의 예시는 다음과 같다:
| से | ना | ली | ली | ली | ना | ना | ली |
| ली | ना | ना | ना | ना | ली | ली | ली |
| न | ली | ना | ली | ले | ना | ली | ना |
| ली | ली | ली | ना | ना | ना | ना | ली |
음역:
| se | nā | lī | lī | lī | nā | nā | lī |
| lī | nā | nā | nā | nā | lī | lī | lī |
| na | lī | nā | lī | le | nā | lī | nā |
| lī | lī | lī | nā | nā | nā | nā | lī |
예를 들어, 첫 번째 줄은 왼쪽에서 오른쪽으로 읽을 수도 있고 첫 번째 칸에서 시작하여 (2,3), (1,5), (2,7), (4,8), (3,6) (4,4), (3,2) 순서로 이동하여 읽을 수도 있다.
해의 존재성
앨런 슈벵크는 m ≤ n인 어떤 m×n 보드에서든 아래 세 가지 조건 중 하나 이상 만족하지 않는 이상 닫힌 기사의 여행이 가능함을 보였다:
- m과 n이 모두 홀수
- m = 1, 2, 또는 4
- m = 3 그리고 n = 4, 6, or 8
여행의 개수
8×8 보드에서는 정확히 26,534,728,821,064개의 방향성이 있는 닫힌 여행(즉, 동일한 경로를 반대 방향으로 가는 여행은 별도로 계산되며, 회전과 대칭도 별도로 계산됨)이 있다. 방향성이 없는 닫힌 투어는 이 수의 정확히 절반인데, 모든 여행에 대해 반대방향의 다른 여행이 존재하기 때문이다. 6×6 보드에서는 방향성이 없는 닫힌 여행이 9,862개 존재한다.
| n | n×n 보드에서 방향이 있는 여행 |
|---|---|
| 1 | 1 |
| 2 | 0 |
| 3 | 0 |
| 4 | 0 |
| 5 | 1,728 |
| 6 | 6,637,920 |
| 7 | 165,575,218,320 |
| 8 | 19,591,828,170,979,904 |
컴퓨터로 기사의 여행 찾기
컴퓨터로 주어진 보드에서 기사의 여행 경로를 찾는 방법에는 여러가지가 있다. 방법들 중 몇몇은 알고리즘인 반면, 몇몇은 휴리스틱이다.
같이 보기
외부 링크
- 머리를 내밀어 봅시다: 기사의 여행 - 기사의 여행 문제를 푸는 방법 중의 하나인 Warnsdorff의 규칙을 이용한 C언어 소스 코드
- 기사의 여행 퍼즐 - 기사의 여행 문제를 풀어 랭킹 경쟁을 하는 사이트
모듈:Authority_control 159번째 줄에서 Lua 오류: attempt to index field 'wikibase' (a nil value).
| 파일:Circle-icons-calculator.svg | 이 글은 수학에 관한 토막글입니다. 여러분의 지식으로 알차게 문서를 완성해 갑시다. |
- 스크립트 오류가 있는 문서
- 잘못된 파일 링크가 포함된 문서
- 위키데이터 속성 P18을 사용하는 문서
- 위키데이터 속성 P41을 사용하는 문서
- 위키데이터 속성 P94를 사용하는 문서
- 위키데이터 속성 P117을 사용하는 문서
- 위키데이터 속성 P154를 사용하는 문서
- 위키데이터 속성 P213을 사용하는 문서
- 위키데이터 속성 P227을 사용하는 문서
- 위키데이터 속성 P242를 사용하는 문서
- 위키데이터 속성 P244를 사용하는 문서
- 위키데이터 속성 P245를 사용하는 문서
- 위키데이터 속성 P268을 사용하는 문서
- 위키데이터 속성 P269를 사용하는 문서
- 위키데이터 속성 P271을 사용하는 문서
- 위키데이터 속성 P347을 사용하는 문서
- 위키데이터 속성 P349를 사용하는 문서
- 위키데이터 속성 P350을 사용하는 문서
- 위키데이터 속성 P373을 사용하는 문서
- 위키데이터 속성 P380을 사용하는 문서
- 위키데이터 속성 P396을 사용하는 문서
- 위키데이터 속성 P409를 사용하는 문서
- 위키데이터 속성 P428을 사용하는 문서
- 위키데이터 속성 P434를 사용하는 문서
- 위키데이터 속성 P435를 사용하는 문서
- 위키데이터 속성 P436을 사용하는 문서
- 위키데이터 속성 P454를 사용하는 문서
- 위키데이터 속성 P496을 사용하는 문서
- 위키데이터 속성 P549를 사용하는 문서
- 위키데이터 속성 P650을 사용하는 문서
- 위키데이터 속성 P651을 사용하는 문서
- 위키데이터 속성 P691을 사용하는 문서
- 위키데이터 속성 P716을 사용하는 문서
- 위키데이터 속성 P781을 사용하는 문서
- 위키데이터 속성 P791을 사용하는 문서
- 위키데이터 속성 P864를 사용하는 문서
- 위키데이터 속성 P865를 사용하는 문서
- 위키데이터 속성 P886을 사용하는 문서
- 위키데이터 속성 P902를 사용하는 문서
- 위키데이터 속성 P906을 사용하는 문서
- 위키데이터 속성 P947을 사용하는 문서
- 위키데이터 속성 P950을 사용하는 문서
- 위키데이터 속성 P966을 사용하는 문서
- 위키데이터 속성 P982를 사용하는 문서
- 위키데이터 속성 P1003을 사용하는 문서
- 위키데이터 속성 P1004를 사용하는 문서
- 위키데이터 속성 P1005를 사용하는 문서
- 위키데이터 속성 P1006을 사용하는 문서
- 위키데이터 속성 P1015를 사용하는 문서
- 위키데이터 속성 P1045를 사용하는 문서
- 위키데이터 속성 P1048을 사용하는 문서
- 위키데이터 속성 P1053을 사용하는 문서
- 위키데이터 속성 P1146을 사용하는 문서
- 위키데이터 속성 P1153을 사용하는 문서
- 위키데이터 속성 P1157을 사용하는 문서
- 위키데이터 속성 P1186을 사용하는 문서
- 위키데이터 속성 P1225를 사용하는 문서
- 위키데이터 속성 P1248을 사용하는 문서
- 위키데이터 속성 P1273을 사용하는 문서
- 위키데이터 속성 P1315를 사용하는 문서
- 위키데이터 속성 P1323을 사용하는 문서
- 위키데이터 속성 P1330을 사용하는 문서
- 위키데이터 속성 P1362를 사용하는 문서
- 위키데이터 속성 P1368을 사용하는 문서
- 위키데이터 속성 P1375를 사용하는 문서
- 위키데이터 속성 P1407을 사용하는 문서
- 위키데이터 속성 P1556을 사용하는 문서
- 위키데이터 속성 P1584를 사용하는 문서
- 위키데이터 속성 P1695를 사용하는 문서
- 위키데이터 속성 P1707을 사용하는 문서
- 위키데이터 속성 P1736을 사용하는 문서
- 위키데이터 속성 P1886을 사용하는 문서
- 위키데이터 속성 P1890을 사용하는 문서
- 위키데이터 속성 P1907을 사용하는 문서
- 위키데이터 속성 P1908을 사용하는 문서
- 위키데이터 속성 P1960을 사용하는 문서
- 위키데이터 속성 P1986을 사용하는 문서
- 위키데이터 속성 P2041을 사용하는 문서
- 위키데이터 속성 P2163을 사용하는 문서
- 위키데이터 속성 P2174를 사용하는 문서
- 위키데이터 속성 P2268을 사용하는 문서
- 위키데이터 속성 P2349를 사용하는 문서
- 위키데이터 속성 P2418을 사용하는 문서
- 위키데이터 속성 P2456을 사용하는 문서
- 위키데이터 속성 P2484를 사용하는 문서
- 위키데이터 속성 P2558을 사용하는 문서
- 위키데이터 속성 P2750을 사용하는 문서
- 위키데이터 속성 P2980을 사용하는 문서
- 위키데이터 속성 P3223을 사용하는 문서
- 위키데이터 속성 P3233을 사용하는 문서
- 위키데이터 속성 P3348을 사용하는 문서
- 위키데이터 속성 P3372를 사용하는 문서
- 위키데이터 속성 P3407을 사용하는 문서
- 위키데이터 속성 P3430을 사용하는 문서
- 위키데이터 속성 P3544를 사용하는 문서
- 위키데이터 속성 P3562를 사용하는 문서
- 위키데이터 속성 P3563을 사용하는 문서
- 위키데이터 속성 P3601을 사용하는 문서
- 위키데이터 속성 P3723을 사용하는 문서
- 위키데이터 속성 P3788을 사용하는 문서
- 위키데이터 속성 P3829를 사용하는 문서
- 위키데이터 속성 P3863을 사용하는 문서
- 위키데이터 속성 P3920을 사용하는 문서
- 위키데이터 속성 P3993을 사용하는 문서
- 위키데이터 속성 P4038을 사용하는 문서
- 위키데이터 속성 P4055를 사용하는 문서
- 위키데이터 속성 P4114를 사용하는 문서
- 위키데이터 속성 P4143을 사용하는 문서
- 위키데이터 속성 P4186을 사용하는 문서
- 위키데이터 속성 P4423을 사용하는 문서
- 위키데이터 속성 P4457을 사용하는 문서
- 위키데이터 속성 P4534를 사용하는 문서
- 위키데이터 속성 P4535를 사용하는 문서
- 위키데이터 속성 P4581을 사용하는 문서
- 위키데이터 속성 P4613을 사용하는 문서
- 위키데이터 속성 P4955를 사용하는 문서
- 위키데이터 속성 P5034를 사용하는 문서
- 위키데이터 속성 P5226을 사용하는 문서
- 위키데이터 속성 P5288을 사용하는 문서
- 위키데이터 속성 P5302를 사용하는 문서
- 위키데이터 속성 P5321을 사용하는 문서
- 위키데이터 속성 P5368을 사용하는 문서
- 위키데이터 속성 P5504를 사용하는 문서
- 위키데이터 속성 P5587을 사용하는 문서
- 위키데이터 속성 P5736을 사용하는 문서
- 위키데이터 속성 P5818을 사용하는 문서
- 위키데이터 속성 P6213을 사용하는 문서
- 위키데이터 속성 P6734를 사용하는 문서
- 위키데이터 속성 P6792를 사용하는 문서
- 위키데이터 속성 P6804를 사용하는 문서
- 위키데이터 속성 P6829를 사용하는 문서
- 위키데이터 속성 P7293을 사용하는 문서
- 위키데이터 속성 P7303을 사용하는 문서
- 위키데이터 속성 P7314를 사용하는 문서
- 위키데이터 속성 P7902를 사용하는 문서
- 위키데이터 속성 P8034를 사용하는 문서
- 위키데이터 속성 P8189를 사용하는 문서
- 위키데이터 속성 P8381을 사용하는 문서
- 위키데이터 속성 P8671을 사용하는 문서
- 위키데이터 속성 P8980을 사용하는 문서
- 위키데이터 속성 P9070을 사용하는 문서
- 위키데이터 속성 P9692를 사용하는 문서
- 위키데이터 속성 P9725를 사용하는 문서
- 위키데이터 속성 P9984를 사용하는 문서
- 위키데이터 속성 P10020을 사용하는 문서
- 위키데이터 속성 P10299를 사용하는 문서
- 위키데이터 속성 P10608을 사용하는 문서
- 위키데이터 속성 P10832를 사용하는 문서
- 위키데이터 속성 P11249를 사용하는 문서
- 위키데이터 속성 P11646을 사용하는 문서
- 위키데이터 속성 P11729를 사용하는 문서
- 위키데이터 속성 P12204를 사용하는 문서
- 위키데이터 속성 P12362를 사용하는 문서
- 위키데이터 속성 P12754를 사용하는 문서
- 위키데이터 속성 P13049를 사용하는 문서
- 수학에 관한 토막글
- 큰 토막글 문서
- 모든 토막글 문서
- 그래프 이론
- 체스 문제
- 해밀턴 경로
- 그래프 알고리즘
- 수학적 체스 문제