마르코프 연쇄 정상상태 계산기
전이행렬을 붙여넣으면 정상분포와 n걸음 뒤 분포를 계산합니다. 각 행의 합이 1인지 먼저 검사하고, 흡수 상태가 있으면 흡수확률과 기대 흡수 시간까지 함께 냅니다.
전이행렬 P
한 줄이 한 행입니다. (i, j)는 «상태 i에 있을 때 다음에 j로 갈 확률»이며 각 행의 합이 1이어야 합니다.
여기에 확률 1을 두고 출발합니다.
정상분포 π
0.4565 · 0.2826 · 0.2609
기약이고 아주기적이라 어디서 시작하든 오래 돌리면 이 분포로 갑니다
정상분포
상태 1에서 출발했을 때의 분포
소통류
(1,0) → (0,1) → (1,0) → … 거듭제곱법은 영원히 진동그래서 이 계산기는 πP = π, Σπ = 1을 직접 풀어 정상분포를 구하고, 거듭제곱법이 수렴하는지는 따로 판정해 알려 줍니다.
계산 방법
- 1전이행렬을 붙여넣습니다. 한 줄이 한 행이고, (i, j)는 상태 i에서 j로 갈 확률입니다.
- 2각 행의 합이 1인지 먼저 확인합니다. 아니면 다른 계산을 하지 않습니다.
- 3정상분포 π와 소통류·주기가 나옵니다.
- 4시작 상태와 걸음 수를 정하면 걸음마다의 분포를 볼 수 있습니다.
- 5흡수 상태가 있으면 어디로 얼마나 빨려 들어가는지와 기대 걸음 수가 함께 나옵니다.
자주 묻는 질문
πP = π와 Σπ = 1을 함께 만족하는 π를 연립방정식으로 풉니다. 이 계산기는 P를 계속 곱하는 거듭제곱법을 쓰지 않습니다. 주기적인 사슬에서는 정상분포가 멀쩡히 존재하는데도 거듭제곱법이 수렴하지 않아 «없다»고 잘못 말하게 되기 때문입니다.
한 상태에서 어딘가로는 반드시 가기 때문입니다. 행의 합이 1이 아니면 그것은 확률이 아니라 그냥 숫자판이고 나머지 계산은 전부 뜻이 없습니다. 손으로 채운 전이행렬의 절반이 여기서 걸리는데, 대개 한 칸을 빠뜨렸거나 백분율(30, 30, 40)을 그대로 넣었거나 행과 열을 바꿔 넣은 경우입니다.
일부러 고치지 않습니다. 40을 0.4로 바꿔 주면 편해 보이지만, 행과 열을 바꿔 넣은 사람에게는 그 «친절»이 조용히 틀린 답을 내주는 셈이 됩니다. 어디가 어긋났는지 짚어 주고 직접 고치게 하는 편이 안전합니다.
사슬이 주기적이라는 뜻이며, 정상분포가 없다는 뜻은 아닙니다. 예를 들어 두 상태를 매 걸음 왔다 갔다 하는 P = [[0,1],[1,0]]은 정상분포가 (0.5, 0.5)로 멀쩡히 존재하지만 P를 계속 곱하면 (1,0)과 (0,1)을 영원히 오갑니다. «정상분포가 존재한다»와 «어디서 시작해도 거기로 간다»는 다른 이야기이고, 뒤엣것에 아주기성이 필요합니다.
닫힌 소통류가 둘 이상이기 때문입니다. 강연결성분 중 밖으로 나가는 화살표가 없는 것을 닫힌 류라 하는데, 이것이 여럿이면 어느 쪽에 갇히느냐에 따라 장기 분포가 달라져 정상분포가 무수히 많습니다. 이때는 정상분포 대신 흡수확률과 기대 흡수 시간을 보는 것이 맞습니다.
기본행렬 N = (I − Q)⁻¹로 구합니다. Q는 일시적 상태끼리의 블록, R은 일시적 상태에서 흡수 상태로 가는 블록일 때 흡수확률은 B = NR이고, 흡수될 때까지의 기대 걸음 수는 N의 각 행 합입니다. N[i][j]는 i에서 출발해 j에 머무는 기대 횟수라는 뜻입니다.
같은 상태로 돌아오는 걸음 수들의 최대공약수입니다. 소통류 안에서 너비우선으로 층을 매기고 화살표마다 (층(u)+1−층(v))의 최대공약수를 구하면 나옵니다. 주기가 1이면 아주기적이라 거듭제곱법이 수렴하고, 2면 짝수·홀수 걸음에 따라 분포가 갈립니다.
맞는 값입니다. 일시적 상태는 언젠가 반드시 떠나 돌아오지 않으므로, 아주 오래 지난 뒤 거기 있을 확률이 0입니다. 닫힌 류가 하나인 사슬에서 그 밖의 상태는 모두 이렇게 됩니다.
이산시간·유한상태 사슬만 다룹니다. 연속시간 사슬(생성행렬)이나 무한 상태공간은 범위 밖입니다. 상태 수는 역행렬 계산 비용과 화면을 생각해 12개까지 받습니다.
전송되지 않습니다. 모든 계산은 브라우저 안에서 이루어지며 입력값은 이 기기에만 남습니다.
알아두면 좋은 점
- 각 행의 합을 가장 먼저 검사하고, 어긋나면 다른 계산을 하지 않습니다. 자동으로 정규화하지 않습니다.
- 정상분포는 πP = π, Σπ = 1을 가우스 소거로 직접 풉니다. 거듭제곱법의 수렴 여부는 따로 판정해 함께 냅니다.
- 주기적인 사슬에서도 정상분포는 존재합니다. 존재와 수렴은 다른 질문입니다.
- 수렴 판정은 일부러 치우친 시작점에서 돌립니다. 균등분포에서 출발하면 대칭인 주기 사슬의 진동을 놓칩니다.
- 소통류는 타잔 알고리즘으로 찾고, 밖으로 나가는 화살표가 없는 것을 닫힌 류로 봅니다.
- 흡수확률·기대 흡수 시간은 기본행렬 N = (I − Q)⁻¹로 구하며 numpy로 대조해 두었습니다.
- 이산시간·유한상태(12개 이하)만 다룹니다.
- 입력한 값은 브라우저 안에서만 계산되며 서버로 전송되지 않습니다.
함께 보면 좋은 도구
마지막 검증: 2026년 9월 1일 · 결과는 참고용 추정치입니다.