더북(TheBook)

개가 탈출할 확률은 도시 크기에 따라 다르다. 도로가 5x5인 도시에서는 개가 탈출할 것이라고 쉽게 확신할 수 있다. 그러나 도시가 아주 크면 탈출 확률이 어떻게 될까? 그리고 다른 변수도 있다. 예를 들어 개가 걸어간 거리는 평균 얼마나 될까? 방금 떠난 교차는 제외하고 이미 그전에 지나온 교차로에서 한 블록 거리에 있는 교차로에 도달할 확률은 평균 얼마나 될까? 한 블록만 더 가면 탈출할 수 있는 곳까지는 얼마나 자주 도달할 수 있을까? 이런 성질의 질문은 앞에서 언급한 응용 분야에서 아주 중요한 의미를 지닌다.

[프로그램 1.4.4](selfavoid.py)는 2차원 불형 배열을 이용해 이 상황을 시뮬레이션한다. 배열의 각 요소는 교차로를 나타내며, 이미 지나온 곳은 True, 아닌 곳은 False로 표시한다. 경로는 중앙에서 시작해 이미 지나오지 않은 곳 중에서 무작위로 선택해 진행하며, 결국 궁지에 몰리거나 탈출하게 된다. 간단히 구현하기 위해 코드에서는 무작위로 길을 선택하고, 선택한 길이 이미 지나온 길이면 아무 행위도 수행하지 않는다. 이후에 아직 지나지 않은 길을 무작위로 선택할 수 있다고 가정한다(이 코드에서는 궁지에 몰린 경우를 따로 검사하고 루프를 빠져나가기 때문에 이렇게 가정해도 된다).

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.