มันเป็นไปได้ที่จะได้รับความน่าจะเป็นที่แน่นอนของการเรียงลำดับโดยใช้การแทนห่วงโซ่มาร์คอฟของปัญหา ลักษณะเฉพาะของวิธีการสร้างห่วงโซ่ขึ้นอยู่กับลำดับความสนใจเฉพาะ แต่ฉันจะยกตัวอย่างสองสามตัวอย่างของวิธีการทำสิ่งนี้
ความน่าจะเป็นที่แน่นอนผ่านทางห่วงโซ่มาร์คอฟ:พิจารณาลำดับต่อเนื่องของผลของการ, T , C , Gที่ผลในลำดับที่มีการแลกเปลี่ยนและสมมติว่าเรามีความสนใจในย่อยของความยาวบางk สำหรับค่าใดก็ตามnให้Wเป็นเหตุการณ์ที่ย่อยของดอกเบี้ยที่เกิดขึ้นและให้Hเป็นเหตุการณ์ที่ผ่านมาผลเป็นครั้งแรก< kตัวละครในย่อยของดอกเบี้ย ( แต่ไม่มากไปกว่านี้) . เราใช้เหตุการณ์เหล่านี้เพื่อให้พาร์ติชันต่อไปนี้ของk + 1A,T,C,GknWHaaa<kk+1 สถานะที่น่าสนใจ:
State 0State 1State 2State 3⋮State k−1รัฐ kW¯∩H0, W¯∩H1, W¯∩H2, W¯∩H3, ⋮W¯∩Hk−1,W.
ตั้งแต่ลำดับของผลที่จะถือว่าเป็นที่แลกเปลี่ยนได้เรามีผลลัพธ์ที่เป็นอิสระเงื่อนไขในความน่าจะเป็นของตนθA+θT+θC+θG=1 1 กระบวนการที่คุณสนใจสามารถแสดงเป็นลูกโซ่มาร์คอฟแบบแยกเวลาที่เริ่มต้นในState 0ที่n=0และช่วงการเปลี่ยนภาพตามเมทริกซ์ความน่าจะเป็นซึ่งขึ้นอยู่กับสตริงย่อยที่สนใจโดยเฉพาะ เมทริกซ์การเปลี่ยนแปลงจะเป็น( k + 1 ) × ( k + 1 )เมทริกซ์แสดงถึงความน่าจะเป็นของการเปลี่ยนแปลงโดยใช้สถานะข้างต้น หากยังไม่ถึงสตริงย่อยที่สนใจการเปลี่ยนแปลงแต่ละครั้งสามารถนำคุณเข้าใกล้สตริงย่อยได้มากกว่าหนึ่งขั้นหรือสามารถตั้งค่าให้คุณกลับสู่สถานะก่อนหน้าซึ่งขึ้นอยู่กับสตริงย่อยเฉพาะ เมื่อถึงสตริงย่อยนี่คือสถานะการดูดซับของห่วงโซ่ซึ่งแสดงถึงความจริงที่ว่าเหตุการณ์เกิดขึ้น
ตัวอย่างเช่นถ้าย่อยของดอกเบี้ยที่แล้วเมทริกซ์การเปลี่ยนแปลงคือA A A AA A
P = ⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢1 - θA1 - θA1 - θA1 - θA1 - θA1 - θA0θA0000000θA0000000θA0000000θA0000000θA0000000θA1⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
ตรงกันข้ามหากสตริงย่อยที่น่าสนใจคือCTA G Cเมทริกซ์การเปลี่ยนแปลงคือ:
P = ⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢1 - θA1 - θA- θค1 - θA- θT1 - θA1 - θA- θค- θG1 - θA- θค0θAθAθA0θAθA00θค00θค0000θT0000000θA0000000θG000000θค1⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
ดังที่เห็นด้านบนการสร้างเมทริกซ์การเปลี่ยนแปลงต้องให้ความสนใจกับสตริงย่อยเฉพาะ ผลลัพธ์ที่ไม่ถูกต้องทำให้คุณกลับสู่สถานะก่อนหน้าในสตริงที่ขึ้นอยู่กับสตริงย่อยที่สนใจ เมื่อเมทริกซ์การเปลี่ยนแปลงที่สร้างขึ้นสำหรับการกำหนดค่าของnความน่าจะเป็นของการมี substring ในห่วงโซ่คือP ( W| n)={ Pn}0 , k k (ความน่าจะเป็นนี้เป็นศูนย์สำหรับทุกn < k .)
การเขียนโปรแกรมสิ่งนี้ใน R:คุณสามารถโปรแกรมนี้เป็นฟังก์ชั่นR
โดยการสร้างฟังก์ชั่นที่สร้างเมทริกซ์การเปลี่ยนแปลงสำหรับห่วงโซ่มาร์คอฟและอาเรย์ของพลังได้ถึงจำนวนการทดลองที่ต้องการ จากนั้นคุณสามารถอ่านความน่าจะเป็นการเปลี่ยนแปลงที่เหมาะสมสำหรับค่าของnที่เป็นที่สนใจ นี่คือตัวอย่างของรหัสที่จะทำ:
#Create function to give n-step transition matrix for n = 1...N
#We will use the example of the substring of interest "AAAAAA"
#a is the probability of A
#t is the probability of T
#c is the probability of C
#g is the probability of G
#N is the last value of n
PROB <- function(N,a,t,c,g) { TOT <- a+t+c+g;
a <- a/TOT;
t <- t/TOT;
c <- c/TOT;
g <- g/TOT;
P <- matrix(c(1-a, a, 0, 0, 0, 0, 0,
1-a, 0, a, 0, 0, 0, 0,
1-a, 0, 0, a, 0, 0, 0,
1-a, 0, 0, 0, a, 0, 0,
1-a, 0, 0, 0, 0, a, 0,
1-a, 0, 0, 0, 0, 0, a,
0, 0, 0, 0, 0, 0, 1),
nrow = 7, ncol = 7,
byrow = TRUE);
PPP <- array(0, dim = c(7,7,N));
PPP[,,1] <- P;
for (n in 2:N) { PPP[,,n] <- PPP[,,n-1] %*% P; }
PPP }
#Calculate probability for N = 100 for equiprobable outcomes
N <- 100;
a <- 1/4;
t <- 1/4;
c <- 1/4;
g <- 1/4;
PROB(N,a,t,c,g)[1,7,N];
[1] 0.01732435
A A A A A An = 1000.01732435