지정된 경계 상자 내에서 임의의 자기 회피 격자 사이클


25

Slither Link 퍼즐 과 관련하여 궁금한 점이 있습니다 정사각형 셀 그리드가 있고 가능한 모든 간단한 사이클 중에서 무작위로 균일 한 그리드 에지 사이클을 찾고 싶습니다.n×n

이를 수행하는 한 가지 방법은 상태가 단순한주기 인 정사각형의 정사각형 세트이고 변형 된 정사각형의 정사각형이 여전히 단순한주기를 가질 때 플립을 유지하기 위해 임의의 정사각형을 선택하고 전환으로 구성된 Markov 체인을 사용하는 것입니다. 경계. 이런 방식으로 간단한 사이클에서 다른 사이클로 갈 수 있습니다 (쉘의 존재에 대한 표준 결과 사용). 이것은 결국 균일 한 분포로 수렴하지만 얼마나 빨리?

또는 더 나은 Markov 체인 또는 간단한 사이클을 선택하는 직접적인 방법이 있습니까?

ETA : 내가 찾고있는 사이클 수를 계산하는 코드 와이 숫자 중 일부에 대한 OEIS에 대한 포인터는 이 블로그 게시물 을 참조하십시오 . 아시다시피, 카운팅은 랜덤 생성과 거의 동일하며,이 수의 인수 분해에 명백한 패턴이없고 OEIS 항목에 공식이 부족하여 알려진 간단한 직접 방법이 없을 것입니다. . 그러나 여전히 체인이 얼마나 빨리 수렴하고 더 나은 체인이 열려 있는지에 대한 질문이 남아 있습니다.


1
OEIS 시퀀스에 의해 카운트 된 세트의 경계는 반드시 단순한 사이클 일 필요는 없으며, 예를 들어 3x3의 경우, 218 중 하나는 중간을 제외한 모든 정사각형을 가지며, 하나의 모서리를 추가로 제거하여 또 다른 4 개가 제공됩니다.
콜린 맥퀸

1
2xn 그리드의 경우 숫자는 oeis.org/A059020나와 있습니다. 3xn의 경우 6,40,213,1049,5034,23984,114069,542295,2577870,12253948,58249011,276885683,1316170990,6256394122,29739651711,141366874247, ... (OEIS 아님)입니다. 나는 손으로 계산하기 위해 전송 행렬을 설정했지만 그것을 기계 생성 행렬과 비교했으며 손과는 다른 유일한 항목은 정확하고 기계는 틀 렸습니다. (이것은 3x3의 경우에 나타나야한다-머신 매트릭스는 중앙에 구멍이있는 옥토 미노를 허용했을 것이다.)
David Eppstein

1
이 시퀀스를 Neil Sloane에 보내서 OEIS에 넣을 수 있습니다.
피터 쇼어

1
@David : 감사합니다. 아마도 전송 매트릭스 방법을 더 철저히 배울 때입니다.
오카모토 요시오

2
@David : 당신은 퍼즐에 대한 링크로 내 인생의 두 시간을 낭비했습니다 .. Thx!
domotorp

답변:


1

그래프에서주기 수에 대한 카운트 만 사용하여주기를 무작위로 선택하기 때문에이 숫자에 대한 임의의 근사값이있는 경우주기를 대략 균일하게 선택할 수 있습니다.

그래프상의 사이클 수가 유의 에지를 포함 ( , V ) 에서 사이클의 수와 동일 G가 - ( U , V ) 플러스로부터 간단한 경로 수 UVG - ( U , V ) . 따라서, u - v 경로 의 수에 대한 다항식 시간 근사치로 다항식 시간 근사값은 한 번에 최대 하나의 G 에지 를 점진적으로 빌드함으로써 달성 할 수 있으며 , 대략적으로 갈수록 가까워집니다. G(u,v)G(u,v)uVG(u,v)uvG

실제로 사이클을 선택하는 더 간단한 방법이 있다고 생각합니다. n x n 제곱 격자 주변의 전체 모서리 그래프라고 하자 . 각각의 에지 ( u는 , V ) 이 에지를 포함하는 사이클 수 (존재의 개수 U - 브이 에서 경로 G가 - ( U , V ) ). 그런 다음 포함 된 사이클 수에 따라 가중치를 적용한 에지를 임의로 선택하십시오. 이것은 무작위로 선택한 사이클의 첫 번째 가장자리입니다. 다른 모든 모서리는 한 번에 하나의 모서리를 확장하여 선택됩니다.Gn×n(u,v)uvG(u,v)

임의주기의 일부인 경로를 선택했다고 가정하십시오. 이 경로에 정점의 집합하자 하고하자 V V 전자 경로의 endvertices합니다. 또한 NC에 있지 않은 v e 의 이웃 집합으로 하자 (이 특정 그래프에는 최대 3 개만 있음). 각 N은 수 카운트 U를 - V 경로 유도 그래프 G [ V - ( C - { V (S) , 브이 ECvsveNveCuNuvs . 그런 다음 이웃, 선택 U 의, V의 전자 단지 계산 경로에 가중치를. 선택한 경로에모서리 ( v e , u ) 를추가하고1을 확장합니다.G[V(C{vs,ve})]uve(ve,u)

이러한 방식으로, 다항식 수의 에지가 선택되며, 각각은 다항식 시간 근사 알고리즘의 적은 수의 계산을 필요로한다. 따라서, 사이클을 균일하게 선택할 수있다.

현재 빠른 경로 수 근사 알고리즘에 대한 참조를 요청 하는 stackexchange 질문이 있습니다. 이 알고리즘이 존재하지만 아직 찾지 못한 곳을 몇 곳에서 읽었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.