การเรียงลำดับพีชคณิตที่มีองค์ประกอบไม่ตรงกับดัชนี± M


13

ฉันเพิ่งถูกถามถึงปัญหานี้ในการสัมภาษณ์อัลกอริทึมและไม่สามารถแก้ไขได้

กำหนดสองค่า N และ M คุณต้องนับจำนวนพีชคณิตของความยาว N (โดยใช้ตัวเลขตั้งแต่ 1 ถึง N) ซึ่งความแตกต่างที่แน่นอนระหว่างตัวเลขใด ๆ ในการเปลี่ยนแปลงและตำแหน่งในการเปลี่ยนแปลงไม่เท่ากับ M

ตัวอย่าง - ถ้า N = 3 และ M = 1 ดังนั้น 1 2 3 และ 3 2 1 คือการเรียงสับเปลี่ยนที่ถูกต้อง แต่ 1 3 2 ไม่ถูกต้องเนื่องจากหมายเลข 3 อยู่ที่ตำแหน่ง 2 และความแตกต่างคือ = M

ฉันลองใช้การเขียนโปรแกรม NxM Dynamic แต่ไม่สามารถเกิดซ้ำได้ซึ่งไม่นับการทำซ้ำ


คุณอาจได้รับสูตรโดยใช้การยกเว้นรวม กรณีM=0เป็นที่รู้จักกันเป็นคลาสสิกderangements
Yuval Filmus

1
นี่เป็นตัวอย่างของการนับการจับคู่ที่สมบูรณ์แบบในกราฟสองส่วนซึ่งเป็นปัญหาที่สมบูรณ์แน่นอนกรณีนี้อาจง่ายขึ้น #P
Yuval Filmus

ฉันได้ลองรวมการยกเว้นแล้ว แต่ไม่มีความคืบหน้า
Gena

คุณสามารถลองปรับวิธีการนับความเสียหาย ฉันไม่รู้ว่าจะพาคุณไปทุกที่หรือไม่ คุณสามารถลองแก้ไข M = 1 (พูด) คำนวณตัวเลขสำหรับค่าเล็ก ๆ ของ N (N = 1,2,3,4,5,6,7,8) โดยใช้กำลังดุร้ายแล้วค้นหาลำดับที่สอดคล้องกัน ในOEISด้วยความหวังว่าคุณจะพบสิ่งที่มีประโยชน์
DW

การสอบถามซ้ำที่คุณตั้งค่าคืออะไร คุณหมายถึงอะไรโดย "count repetitions"?
ราฟาเอล

คำตอบ:


2

สิ่งแรกที่ฉันจะถามเมื่อได้รับคำถามนี้จะเป็น

คุณต้องการอัลกอริทึมเวลาพหุนามหรือไม่?

แล้วฉันหวังว่าคำตอบคือ 'ไม่' ฉันสงสัยว่าปัญหานี้เกิดจากปัญหา NP-hard ด้วยเหตุผลดังต่อไปนี้:

วิธีธรรมชาติในการแก้ไขปัญหานี้คือการพิจารณาการวางตำแหน่งของหมายเลขแรกและได้รับสูตรแบบเรียกซ้ำเพื่อวางหมายเลขอื่น วิธีนี้ใช้ได้ผลกับกรณี (เช่นการนับจำนวนการเรียงความ) เนื่องจากมันไม่สำคัญว่าคุณจะวางตำแหน่งแรกไว้ที่ใดเนื่องจากมีตำแหน่ง 'ผิดกฎหมาย' เพียงหมายเลขเดียวเท่านั้น กล่าวอีกนัยหนึ่งวิธีการนี้นำไปสู่ปัญหาย่อยอิสระM=0

สำหรับมันไม่ง่ายอย่างนั้นตอนนี้เราสามารถมีตำแหน่งที่ผิดกฎหมายได้2ตำแหน่งสำหรับตัวเลขบางตัว ตำแหน่งใดในตำแหน่งเหล่านี้ยังคงอยู่ในโปรแกรมย่อยนั้นเกี่ยวข้องกับการแก้ปัญหาของโปรแกรมย่อย การพิจารณาจำนวนตำแหน่ง 'ผิดกฎหมาย' นั้นไม่เพียงพอเนื่องจาก 'โซ่' ของตัวเลขที่ใช้ตำแหน่งที่ผิดกฎหมายจะต้องกำหนดโครงสร้างของปัญหาย่อยของปัญหาย่อยนั้น ดังนั้นวิธีการนี้จะนำไปสู่ปัญหาย่อยดังต่อไปนี้:M>02

ให้เซต , เซตB Nทั้งขนาดที่มากที่สุดNและจำนวนธรรมชาติM , นับจำนวนการจับคู่ที่สมบูรณ์แบบบนกราฟสองส่วน( A , B , E )โดยที่( a , b ) Eถ้าเพียง แต่ถ้า| a - b | MANBNNM(A,B,E)(a,b)E|ab|M

ปัญหานี้ดูยาก แนวทางเดียวของปัญหานี้ที่ฉันเห็นคือการรวม / แยกซึ่งจะไม่นำไปสู่อัลกอริทึมเวลาพหุนาม

เราสามารถพิจารณาแนวทางที่ไม่พึ่งพาการวนซ้ำของตัวเลข แต่ฉันไม่รู้ว่าคุณจะทำอย่างไร (โดยเฉพาะในระหว่างการสัมภาษณ์!)

แน่นอนว่าทั้งหมดนี้เป็นเพียงการเก็งกำไรและยังเป็นไปได้ที่เคล็ดลับที่ชาญฉลาดสามารถแก้ปัญหาเวลาพหุนามได้ แต่ฉันหวังว่าฉันจะโต้แย้งได้อย่างน่าเชื่อถือว่าเคล็ดลับนี้ต้องฉลาดมากแน่นอน

บางทีอาจเป็นไปได้ที่จะแสดงความกระด้าง NP โดยการลดปัญหานี้เป็น # 2-SAT ('โซ่' ของตัวเลขที่ใช้ตำแหน่งที่ผิดกฎหมายดูเหมือนจะเป็นตัวเลือกที่ไม่สำคัญที่สามารถจับคู่กับการเลือกค่าความจริง) แต่ ฉันไม่ได้เห็นวิธีที่ชัดเจนในการทำเช่นนี้ ณ ตอนนี้


ในกรณีที่ผู้สัมภาษณ์พึงพอใจกับอัลกอริธึมเวลาแบบเอ็กซ์โพเนนเชียลฉันเพียงแค่สร้างวิธีแก้ปัญหาที่เป็นไปได้ทั้งหมดโดยการปรับอัลกอริทึมการย้อนรอยแบบเรียกซ้ำเพื่อสร้างการเปลี่ยนแปลงเพื่อยกเว้นกรณีนี้โดยเฉพาะ


ฉันบอกว่าฉันสามารถให้อัลกอริธึมแบบเอ็กซ์โปเนนเชียลไทม์ แต่ถูกถามถึงวิธีแก้ปัญหาเวลาแบบพหุนามที่ทำงานเมื่อ N คือ <= 1,000.
Gena

1
ดีเว้นแต่คุณจะจำผิด / ตีความคำถามผิดเพราะคำตอบจาก PPenguin ชี้ให้เห็นฉันคิดว่าคำถามนี้อาจถูกถามโดยผู้สัมภาษณ์ที่มีความต้องการสูงผู้สัมภาษณ์ที่เข้าใจผิดคำถามหรืออาจเป็นคำถามที่พวกเขาไม่คาดคิดว่าจะมีใคร . แม้ว่าคำถามนี้จะกลายเป็นว่าไม่ได้เป็นการยากในการคำนวณ แต่เป็นการสัมภาษณ์ที่หนักที่สุด
จิ้งจกไม่ต่อเนื่อง

ดูเหมือนว่า M = 1 น่าจะเป็นไปได้ (และอาจเป็นอย่างอื่น) ดังนั้นจึงมีบางสิ่งที่เราพลาดไป คุณช่วยฉันเข้าใจ / ประเมินกรณี M = 1 ได้ไหม ฉันทำคำถามแยกต่างหากสำหรับมันcs.stackexchange.com/questions/74674/…
PPenguin

2

เป็นไปได้หรือไม่ที่คุณจำรายละเอียดเฉพาะที่ผิดหรือตีความคำถามผิด

ในคำอธิบายของคุณองค์ประกอบในตำแหน่งถูก จำกัด ให้- ± M แต่ถ้าพวกเขาก็มีความหมายที่แตกต่างกันถูก จำกัด : - M , แล้วปัญหาจะปรากฏเวไนยabab±M
abM


ฉันทำงานจากปัญหาที่ง่ายกว่านั้นและฉันพยายามพูดคุยในแบบที่ฉันคาดหวังอาจให้อิสระในการแก้ปัญหาที่ใหญ่กว่า แต่สิ่งนี้ชัดเจนสำหรับฉันว่าทำไมวิธีการเวียนเกิดซ้ำนั้นไม่น่าเป็นไปได้มากที่ฉันจะพูดคุยในตอนท้าย

พิจารณาฟังก์ชั่นซึ่งให้จำนวนเรียงสับเปลี่ยนของรายการองค์ประกอบที่มีข้อความ 1 ถึงNโดยที่องค์ประกอบaอยู่ในตำแหน่งb (ตำแหน่งแรกคือ 1) เป็นไปตาม- b Mและb - Pf(N,M,P)NababMbaP

เมื่อต้องการเห็นภาพนี้การแยกออกเป็นสองข้อ จำกัด อนุญาตให้และPเปลี่ยนข้อ จำกัด เหล่านั้นแยกกันMP

1 2 3 4 5  M=0, restricted values for each position
. . . . .  (positions in list)
1 2 3 4 5  P=0, restricted values for each position

3 4 5      M=2, restricted values for each position
. . . . .  (positions in list)
  1 2 3 4  P=1, restricted values for each position

เพื่อความสะดวกสบายเมื่อเพื่อให้มันไม่ได้เกิดขึ้นในข้อ จำกัด พีชคณิตที่กำหนดกรัม( N , M ) = F ( N , M , P ) ในทำนองเดียวกันg ( N , P ) = f ( N , M , P )เมื่อM Nเพื่อให้มันไม่มีข้อ จำกัด ในการเรียงสับเปลี่ยนPNg(N,M)=f(N,M,P)g(N,P)=f(N,M,P)MN

ในกรณีพิเศษข้อ จำกัด จากMและPเทียบเท่าดังนั้นหนึ่งสามารถละเลยทำให้เราสามารถเขียนFในแง่ของกรัม : F ( N , 0 , 0 ) = กรัม( N , 0 )M=P=0MPfg

f(N,0,0)=g(N,0).

จากสมมาตรของปัญหา:

f(N,M,P)=f(N,P,M)

g(N,M)f(N,M,P)

M=0ijN1j

j(N2)j

  1. ig(N2,0)

  2. ijg(N1,0)

g(N,0)=(N1)[g(N2,0)+g(N1,0)]

g(1,0)=0,  g(2,0)=1

นี่เป็นสูตรเรียกซ้ำที่ซ้ำซ้อนตามปกติ

ในขณะที่ฉันไม่สามารถจินตนาการได้ว่ามีใครบางคนกำลังทำสิ่งนี้อยู่ในจุดนี้ แต่กลับกลายเป็นว่ามีวิธีแก้ปัญหาแบบปิดสำหรับเรื่องนี้ (ดูบทความวิกิderangementสำหรับรายละเอียด)

g(N,0)=n!e+12

MN

(MN)g(N,M)=N!

0<M<NMM

i

  1. i<Miig(N1,M1)

  2. i>=Miig(N1,M)

(0<M<N)g(N,M)=(M1)g(N1,M1)+(NM+1)g(N1,M)

g

M+PNNMNPM+PNg(N,M+PN)

(M+P)Nf(N,M,P)=g(N,M+PN)

0<M<N0<P<NM+P<Nf0<MP<N

PNMPM

MNMPP

อย่างไรก็ตามนี่คือที่ที่เราจะต้องจบ เนื่องจากไม่มีวิธีการส่งต่อด้วยวิธีนี้


ab±M

f(N,M,P)

2NN{A1,A2,...,AN}{B1,B2,...,BN}(Ai,Bj)ij=M(Bj,Ai)ji=MM0

AB

ดังนั้นเราต้องการฟังก์ชันที่ใช้เป็นกราฟข้อ จำกัด นี้และส่งออกจำนวนการเรียงสับเปลี่ยนที่ตรงตามข้อ จำกัด

M+PN

0<MP<NNN!

เนื่องจากมี subgraphs ที่เป็นไปได้มากมายเมื่อได้รับอนุญาตให้โซ่ฉันไม่เห็นว่าสิ่งนี้สามารถแก้ไขได้ด้วยวิธีการเรียกซ้ำโดยทั่วไปเว้นแต่จะมีความสัมพันธ์ที่ฉลาดบอกว่ากราฟข้อ จำกัด ที่ไม่ใช่ isomorphic นั้นมีค่าเทียบเท่ากับจำนวนวิธีเรียงสับเปลี่ยน

ฉันคิดว่าน่าจะเป็นไปได้มากที่สุดคำถามถูกตีความผิด อาจเป็นไปได้โดยผู้สัมภาษณ์ (อาจลืมรายละเอียดคำตอบด้วยตนเอง)


เหตุใดกราฟข้อ จำกัด ของคุณจึงกำกับ ทิศทางหมายถึงอะไร
จิ้งจกไม่ต่อเนื่อง

@Discretelizard สองทิศทาง (a-> b vs b-> a) แยกแยะระหว่างที่ข้อ จำกัด มาจาก (รุ่น '+' หรือรุ่น '-' ของข้อ จำกัด ) มันไม่จำเป็นจริงๆเพราะมันไม่สำคัญว่าต้นกำเนิดของข้อ จำกัด มันทำให้ฉันง่ายขึ้นที่จะเห็นภาพว่าเกิดอะไรขึ้น
PPenguin
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.