ความน่าจะเป็นที่การจัดการลับของซานต้าจะส่งผลให้การจับคู่สมบูรณ์แบบ


11

ดังนั้นเราจึงมี Secret Santa ในที่ทำงาน

เรา 8 คน เราแต่ละคนผลัดกันดึงกระดาษชิ้นเล็ก ๆ จากชามที่มีชื่ออยู่ กฎข้อเดียว: ถ้าคุณดึงชื่อของคุณคุณต้องใส่กระดาษกลับเข้าไปในชามแล้วลองอีกครั้ง

ลองเรียกคน A, B, C, D, E, F, G, H ซึ่งเป็นลำดับที่พวกเขาหยิบกระดาษ

เมื่อคืนเราแลกเปลี่ยนของขวัญกัน

ซานต้าเป็นความลับของเอฟ
B คือซานต้าที่เป็นความลับของ E
C เป็นซานต้าที่เป็นความลับ
D คือซานต้าที่เป็นความลับของซี
E เป็นซานต้าที่เป็นความลับของ B
F เป็นซานต้าที่เป็นความลับของ A
ซานต้าเป็นความลับของเอช
H คือซานต้าลับของ G

ดูว่าเกิดอะไรขึ้น เราสร้างคู่รัก

A และ F เป็นซานต้าที่เป็นความลับของกันและกัน
B และ E เป็นซานต้าที่เป็นความลับของกันและกัน
C และ D เป็นซานต้าที่เป็นความลับของกันและกัน
G และ H เป็นซานต้าที่เป็นความลับของกันและกัน

ความน่าจะเป็นของเหตุการณ์นี้คืออะไรและคุณคำนวณได้อย่างไร


1
"ถ้าคุณดึงชื่อของคุณคุณต้องใส่กระดาษกลับเข้าไปในชามแล้วลองอีกครั้ง" จะเกิดอะไรขึ้นถ้าคุณเป็นคนสุดท้ายที่เลือกและดึงชื่อของคุณเอง?
Juho Kokkala

หากบุคคล A ดึงฉลาก C (พูด) จากนั้นบุคคล B วาดป้าย B บุคคล A จะใส่ป้าย C กลับเข้าหมวกแล้วดึงอีกครั้งหรือไม่ นี่คือสิ่งที่คำตอบดูเหมือนจะบ่งบอกถึง แต่ฉันเข้าใจถ้อยคำที่หมายความว่า A เก็บฉลาก C และ B ออกจากหมวกซึ่งมีฉลาก (A, B, D, E, F, G, H)
Juho Kokkala

คำตอบ:


14

จำนวนรวมของการมอบหมายในหมู่คนโดยที่ไม่มีใครมอบหมายให้ตัวเองคือ (สิ่งเหล่านี้เรียกว่าderangements ) ค่าใกล้เคียงกับ .d ( 2 n ) = ( 2 n ) ! ( 1 / 2 - 1 / 6 + + ( - 1 ) k / k ! + + 1 / ( 2 n ) ! ) ( 2 n ) ! / e2n

d(2n)=(2n)!(1/21/6++(1)k/k!++1/(2n)!).
(2n)!/e

หากพวกเขาสอดคล้องกับการจับคู่ที่สมบูรณ์แบบแล้วพวกเขาก็เป็นผลิตภัณฑ์ของเคล็ดtranspositions นี่แสดงถึงโครงสร้างวงจรของพวกเขาเป็นรูปแบบ

(a11a12)(a21a22)(an1an2).

จำนวนของรูปแบบที่แตกต่างดังกล่าวคือลำดับของกลุ่มของพีชคณิตทั้งหมดของชื่อหารด้วยลำดับของโคลงของรูปแบบ องค์ประกอบที่มีความเสถียรอาจสลับจำนวนคู่ใดก็ได้และมันอาจเปลี่ยนคู่ไหนมีองค์ประกอบที่มีเสถียรภาพ ดังนั้นจึงมี2nn!2nn!

p(2n)=(2n)!2nn!

การจับคู่ดังกล่าว

เนื่องจากการจับคู่ที่สมบูรณ์แบบทั้งหมดนั้นเป็นความผิดเพี้ยนและโอกาสที่เท่าเทียมกันทั้งหมดจึงเท่ากับ

p(2n)d(2n)=12nn!(11/2+1/6+(1)k/k!++1/(2n)!)e2nn!.

สำหรับคนคำตอบที่แน่นอนคือในขณะที่การประมาณคือ : พวกเขาเห็นด้วยกับตัวเลขที่มีความหมายห้าตัว15 / 2119 0.00707881 E / ( 2 42n=815/21190.00707881e/(244!)0.00707886


ในการตรวจสอบRการจำลองนี้ดึงการสุ่มเรียงลำดับเป็นล้าน ๆ ชิ้นจากวัตถุแปดชิ้นเท่านั้นที่เก็บรักษาสิ่งที่เลวร้ายและนับจำนวนที่มีการจับคู่ที่สมบูรณ์แบบ มันส่งผลการประมาณการข้อผิดพลาดมาตรฐานของการประเมินและคะแนน Z เพื่อเปรียบเทียบกับค่าทางทฤษฎี เอาท์พุทมันคือ

       p.hat           se            Z 
 0.006981031  0.000137385 -0.711721705

คะแนน Z ขนาดเล็กสอดคล้องกับค่าทางทฤษฎี (ผลลัพธ์เหล่านี้จะสอดคล้องกับค่าทางทฤษฎีใด ๆ ระหว่างถึง )0.00730.00660.0073

paired <- function(x) crossprod(x[x] - 1:length(x))==0
good <- function(x) sum(x==1:length(x)) == 0

n <- 8
set.seed(17)
x <- replicate(1e6, sample(1:n, n))
i.good <- apply(x, 2, good)
i.paired <- apply(x, 2, paired)

n.deranged <- sum(i.good)
k.paired <- sum(i.good & i.paired)
p.hat <- k.paired / n.deranged
se <- sqrt(p.hat * (1-p.hat) / n.deranged)
(c(p.hat=p.hat, se=se, Z=(p.hat - 15/2119)/se))

+1 สำหรับใบหน้าแรคคูนโง่และแว่นตา ... ฉันใช้ทางลัดเล็กน้อยในแนวคิด "องค์ประกอบที่มีเสถียรภาพ" เพราะฉันไม่รู้ว่าจะเริ่มมองหาที่ไหน อย่างสังหรณ์ใจ
Antoni Parellada

@Antoni ดูen.wikipedia.org/wiki/Burnside's_lemmaเป็นต้น
whuber

1
@ Amoeba ฉันคิดว่าจะทำอย่างนั้น แต่ตัดสินใจที่จะจดจ่อกับปัญหาที่เกิดขึ้นในปัจจุบัน บทความ Wikipedia ที่ฉันเชื่อมโยงเพื่อให้ได้หลายวิธีในการรับสูตรนี้ วิธีการที่ชัดเจนที่สุดใช้หลักการของการรวม - แยกเช่นที่เห็นได้ชัดในการแสดงออกผลรวมสลับ
whuber

1
คุณคิดว่าการวาดฉลากเริ่มจากศูนย์หรือไม่ถ้ามีคนดึงป้ายของตัวเอง (ดูความเห็นของฉันต่อคำถาม) มิฉะนั้นฉันไม่คิดว่าทุกสิ่งล้วนมีแนวโน้มที่เท่าเทียมกัน
Juho Kokkala

1
@Juho นั่นเป็นคำถามที่ดีคุ้มค่าที่จะคิดต่อไป ฉันได้ตอบตามความตั้งใจโดยนัยของขั้นตอนการวาดซึ่งจะเป็นการสร้างความสับสนทั้งหมดที่มีความน่าจะเป็นที่เท่ากัน แต่ไม่ชัดเจนว่ากระบวนการใดที่ตามมาหรือไม่ว่ามันจะสร้างความยุ่งเหยิงที่มีการแจกแจงแบบเดียวกันหรือไม่ รับประกันได้ว่าจะประสบความสำเร็จในการผลิตความผิดเพี้ยน!)
whuber

7

ฉันประทับใจมากกับความงดงามในคำตอบของ @whuber พูดตามตรงฉันต้องทำความคุ้นเคยกับแนวคิดใหม่ ๆ เพื่อทำตามขั้นตอนในการแก้ปัญหาของเขา หลังจากใช้เวลาไปกับมันฉันตัดสินใจที่จะโพสต์สิ่งที่ฉันได้รับ ดังนั้นสิ่งต่อไปนี้เป็นบันทึก exegetical เพื่อตอบสนองของเขาได้รับการยอมรับแล้ว ด้วยวิธีนี้ไม่มีความพยายามในการสร้างสรรค์และจุดประสงค์เดียวของฉันคือการให้จุดยึดเพิ่มเติมเพื่อทำตามขั้นตอนที่เกี่ยวข้อง

ดังนั้นที่นี่มันจะไป ...

1. ทำไม ? 2nอันนี้อาจเป็นวิธีพื้นฐานเกินไป: เราต้องการคนจำนวนคู่เพื่อเล่นเกม

2. เราสามารถหาสูตรสำหรับความแตกต่างได้หรือไม่?

ต่อไปนี้รายการวิกิพีเดียมีตัวอย่างอยู่บนพื้นฐานของการจับคู่ของผู้คนและหมวก ,หมวกจะแม่นยำเรามีตัวเลือกสำหรับคนแรกที่ยกขึ้นหมวกจะแสดงที่นี่ดังนี้n

d(n)=(n1)[d(n2)+d(n1)]=

=nd(n2)d(n2)+nd(n1)d(n1)ซึ่งสามารถจัดระเบียบใหม่เป็น:

d(n)nd(n1)=[d(n1)(n1)d(n2)](n-2)]

ตอนนี้สังเกตเห็นความขนานระหว่าง LHS ของสมการนี้และส่วนบน RHS ภายในวงเล็บเราสามารถทำซ้ำได้:

d(n)nd(n1)=[d(n1)(n1)d(n2)]=

=(1)2[d(n2)(n2)d(n3)]==(1)n2d(2)2d(1)

นี่ก็หมายความว่า nd(n)=nd(n1)+(1)n

ทำงานย้อนหลัง:

d(2)=1

d(3)=3d(2)1=311

d(4)=4d(3)+1=4314+1

d(5)=5d(4)1=543154+51

d(6)=6d(5)+1=65431654+656+1=

=6!(12132+143215432+16!)=

=6!(16!15!+14!13!+12!11!+1)

โดยทั่วไปแล้ว

d(n)=n!(11+12!13!+14!++1n!)

และจดจำซีรีย์ Taylor ของประเมินที่ :exx=1

d(n)n!e

3. การขนย้าย Disjoint :แนวคิดของการขนย้ายเป็นเรื่องง่ายที่จะได้รับจากลิงก์ที่ให้ไว้ในคำตอบดั้งเดิมแต่ "disjoint" ค่อนข้างชัดเจนน้อยลง ดูตัวอย่างจากชุด , การเปลี่ยนรูป สามารถแสดงเป็นวัฏจักรเป็น: แต่รูปแบบของวง บนตัวเอง - รอบแยกตัวออก หรือวางทั้งสองรอบด้วยกันการเปลี่ยนแปลงที่สามารถแสดงเป็นสินค้า{EF})a,b,c,d,e,fb,d,a,c,f,ea -> b -> d -> c after which it returns to ae -> f(a b d c)(e f)

ในคำถามของซานตาคลอส (พนักงานแปดคนที่วาดชื่อเป็นคู่ที่ตรงกันอย่างสมบูรณ์: แอนนาให้ของขวัญกับมาร์ธาในขณะที่มาร์ธาดึงชื่อของแอนนา) จะมีลูปปิดตัว4

4. ในการหาจำนวนลูปสององค์ประกอบเราต้องแบ่งพีชคณิตที่เป็นไปได้ทั้งหมดของกลุ่มแปด ( ) คนโดยจำนวนที่เป็นไปได้ทั้งหมดของการแลกเปลี่ยนสององค์ประกอบและจำนวนการเรียงสับเปลี่ยนของคู่เหล่านี้ทั้งหมด:NN!}(2n)!2n2nn!p(2n)=(2n)!2nn!


สำหรับการRจำลอง:

1 paired <- function(x) crossprod(x[x] - 1:length(x))==0

ฟังก์ชั่นนี้ช่วยลดความเข้าใจลงx[x]: มีวัตถุประสงค์เพื่อประเมินเวกเตอร์องค์ประกอบที่เป็นตัวแทนของการมอบหมายปัจจุบันและพิจารณาว่ามันประกอบด้วยลูป 2 องค์ประกอบเช่นเดียวกับในปัญหาของซานตาคลอส ตราบใดที่การเปลี่ยนลำดับสอดคล้องกับ transposing องค์ประกอบเพื่อที่ว่าถ้าพอลก็ควรที่จะให้ของขวัญมาเรีย ( และในทางกลับกัน) และแม็กซ์จอห์น ( / ) แรกขนย้ายผลเพียงผลในการจับคู่ที่สมบูรณ์แบบใหม่ ( / และ/ ) เรากำลังบรรลุเงื่อนไขเริ่มต้นของการจับคู่ที่สมบูรณ์แบบ: 8Paul -> MariaMaria -> PaulMax -> JohnJohn -> MaxMax -> MariaMaria -> MaxPaul -> JohnJohn -> Paulป้อนคำอธิบายรูปภาพที่นี่

ในคำอื่น ๆ ถ้าเรากลับไปที่ตัวอย่างของหมวกในที่วิกิพีเดียคนi มักจะใช้เวลากลับหมวก11

2 good <- function(x) sum(x==1:length(x)) == 0

ฟังก์ชั่นนี้ประเมินว่าเรากำลังเผชิญกับความยุ่งเหยิงโดยการเปรียบเทียบองค์ประกอบเวกเตอร์ชาญฉลาดกับเวกเตอร์และทำให้แน่ใจว่าไม่มีความบังเอิญ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 )x(1,2,3,4,5,6,7,8)

3.k.paired <- sum(i.good & i.paired)จะมีการยกเว้นการเรียงสับเปลี่ยนแบบคู่ดังที่แสดงไว้ด้านบนในแผนภาพหรือไม่

v <- c(1,2,3,4,5,6,7,8)
w <- c(1,2,3,5,4,6,7,8)

(c("is v paired?" = paired(v), "is w paired?" = paired(w),
   "is v a derang?" = good(w), "is w a derang?" = good(w)))

# not all paired permutations are derangements.

1
+1 แต่สูตรสำหรับ derangements กับควรจะเป็นตัวอย่างเท่านั้นเช่นกับไม่==e=
อะมีบา

1
+1 เนื่องจากเป็นความพยายามที่คู่ควรและมีประโยชน์ในการทำความเข้าใจและอธิบายวิธีแก้ปัญหา คำอธิบายของผลิตภัณฑ์กากบาทดูไม่ถูกต้อง: มันแค่คำนวณผลรวมของกำลังสองของรายการ โดยเฉพาะอย่างยิ่งและไม่สามารถ "ยกเลิก" ได้ การใช้ผลิตภัณฑ์ข้ามเป็นสิ่งที่ไม่จำเป็น มันเป็นเพียงวิธีแรกที่มีประสิทธิภาพพอสมควรที่นึกถึงการตรวจสอบความเท่าเทียมกันของเวกเตอร์ตัวเลขสองตัวซึ่งเป็นบทบาทเชิงตรรกะในอัลกอริทึม อย่าสับสนในการใช้งานพร้อมคำอธิบาย! - 111
whuber

@whuber ขอบคุณ ฉันโง่มากที่นั่น ฉันไม่เก่งเรื่องการทำดัชนีซ้ำ ๆ ... ฉันรู้ว่ามีบางอย่างไม่ถูกต้อง ตอนนี้มันควรได้รับการแก้ไข
Antoni Parellada
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.