คำถามติดแท็ก algorithms

อัลกอริทึมเป็นลำดับขั้นตอนที่กำหนดไว้อย่างดีซึ่งกำหนดวิธีแก้ปัญหาแบบนามธรรมให้กับปัญหา ใช้แท็กนี้เมื่อปัญหาของคุณเกี่ยวข้องกับการออกแบบและวิเคราะห์อัลกอริทึม

1
ปัญหาก้อนกรวด
Pebbling เป็นเกมเล่นไพ่คนเดียวที่เล่นบนกราฟไม่ได้บอกทิศทางซึ่งจุดสุดยอดแต่ละอันจะมีก้อนกรวดเป็นศูนย์หรือมากกว่า ย้าย pebbling เดียวประกอบด้วยการลบสองก้อนกรวดจากจุดสุดยอดและเพิ่มหนึ่งกรวดไปยังเพื่อนบ้านโดยพลการของโวลต์(เห็นได้ชัดว่าจุดยอด v ต้องมีก้อนกรวดอย่างน้อยสองก้อนก่อนที่จะเคลื่อนที่) ปัญหา PebbleDestruction ถามโดยให้กราฟและก้อนหินนับสำหรับจุดยอดแต่ละอันไม่ว่าจะมีลำดับหรือไม่ ของการเคลื่อนย้ายก้อนกรวดที่ลบออกทั้งหมดยกเว้นก้อนกรวดเดียว พิสูจน์ว่า PebbleDestruction นั้นสมบูรณ์แบบด้วย NPGGGvvvvvvG=(V;E)G=(V;E)G = ( V; E )p(v)p(v)p ( v )vvv ก่อนอื่นฉันแสดงให้เห็นว่ามันอยู่ใน NP เนื่องจากฉันสามารถตรวจสอบวิธีการแก้ปัญหาในเวลาพหุนามติดตามการนับพลอยจากเพียงหนึ่งกรวด ถัดไปมีแนวคิดอะไรบ้างที่ปัญหาที่จะใช้เป็นพื้นฐานสำหรับการลดเวลาแบบพหุนาม สิ่งที่ต้องการปกจุดสุดยอดทำงานหรือไม่ หรือจุดสุดยอดปกขนาดแตกต่างกันอย่างไร ถ้าเป็นเช่นนั้นจะจัดการก้อนกรวดที่หลากหลายในแต่ละการเคลื่อนไหวได้อย่างไร? ขอบคุณ. จาก: http://courses.engr.illinois.edu/cs473/sp2011/hw/disc/disc_14.pdf

1
ได้รับกราฟคอร์ดัสิ่งที่เป็นความซับซ้อนของการคำนวณการลดก๊กกราฟ ?
กราฟเป็นเสียงประสานถ้ามันไม่ได้เกิดวงจรความยาวหรือมากกว่า ต้นไม้ก๊กของเป็นต้นไม้ที่จุดของต้นไม้ที่มีชมรมสูงสุดของGขอบในสอดคล้องกับตัวคั่นที่น้อยที่สุด จำนวนของกลุ่มต้นไม้ที่แตกต่างกันสามารถเป็นเลขชี้กำลังในจำนวนจุดยอดในกราฟคอร์ดGGG444TTTGGGGGGTTT ลดกราฟก๊ก เป็นสหภาพของต้นไม้ก๊กทั้งหมดของGนั่นคือมันมีจุดยอดเดียวกันและขอบที่เป็นไปได้ทั้งหมด ความซับซ้อนของการคำนวณสำหรับกำหนดคืออะไร?Cr(G)Cr(G)C_r(G)GGGCr(G)Cr(G)C_r(G)GGG ฉันคิดว่าฉันเคยเห็นงานนำเสนอที่อ้างว่าสามารถคำนวณในเวลาโดยไม่มีข้อพิสูจน์ นี้จะหมายความว่ามันเป็นเรื่องง่ายเหมือนการคำนวณต้นไม้ก๊กของGมีการอ้างอิงที่ยืนยันสิ่งนี้หรือให้อัลกอริทึมที่ช้ากว่าสำหรับการคำนวณมันหรือไม่?Cr(G)Cr(G)C_r(G)O(m+n)O(m+n)O(m+n)GGG

4
การหาขนาดของเซตย่อยที่เล็กที่สุดด้วย GCD = 1
ปัญหานี้เป็นปัญหาจากการฝึกซ้อมของที่โปแลนด์วิทยาลัย Programming Contest 2012 แม้ว่าฉันจะสามารถหาวิธีแก้ปัญหาสำหรับการแข่งขันหลัก แต่ฉันไม่สามารถหาวิธีแก้ไขปัญหานี้ได้ทุกที่ ปัญหาคือ: เนื่องจากชุดของเลขจำนวนเต็มบวกNNNแตกต่างกันไม่เกิน10910910^9ให้หาขนาดmmmของเซตย่อยที่เล็กที่สุดที่ไม่มีตัวหารร่วมอื่นที่ไม่ใช่ 1 NNNมากที่สุด 500 และสามารถหาวิธีแก้ปัญหาได้ ฉันจัดการเพื่อแสดงให้เห็นว่าm≤9m≤9m \le 9 9 เหตุผลของฉันคือ: สมมติว่ามีเซตย่อยน้อยที่สุดของSSSขนาด|S|=10|S|=10|S|=10SSS1&lt;g1&lt;g2&lt;...&lt;g101&lt;g1&lt;g2&lt;...&lt;g101 < g_1 < g_2 < ... < g_{10}gcd(gi,gj)=1gcd(gi,gj)=1\gcd(g_i,g_j)=1i≠ji≠ji \neq jSSSg2g3...g10g2g3...g10g_2g_3...g_{10}g2g3...g10≥3×5×7×11×...×29=3234846615&gt;109g2g3...g10≥3×5×7×11×...×29=3234846615&gt;109g_2g_3...g_{10} \ge 3\times5\times7\times11\times...\times29=3234846615 > 10^9ซึ่งขัดแย้งกัน อย่างไรก็ตามแม้จะมีสิ่งนี้กำลังดุร้ายตรงไปตรงมาก็ยังช้าเกินไป ไม่มีใครมีความคิดอื่น ๆ อีกบ้าง?

1
Shift- แก้ไขการแยกวิเคราะห์ - คำถาม
ฉันเพิ่งเจอกระดาษอธิบายเทคนิคการแยกวิเคราะห์ที่กล่าวถึงในชื่อ น่าเสียดายที่คำศัพท์ที่ใช้ในกระดาษดังกล่าวค่อนข้างเกินความเข้าใจของฉันดังนั้นฉันจึงพยายามที่จะเข้าใจอัลกอริทึมการก่อสร้างมากขึ้นอย่างสังหรณ์ใจ ฉันเชื่อว่าฉันประสบความสำเร็จ ( การนำเสนอนี้เป็นที่มาของช่วงเวลา ah-ha) แต่การตรวจสอบความถูกต้องจากคนที่คุ้นเคยกับเทคนิคหรือคำศัพท์ที่อยู่ในนั้นจะได้รับการชื่นชมอย่างมาก ฉันจะอธิบายวิธีการแก้ปัญหาของฉัน (ถ้ามันถูกต้องฉันเชื่อว่ามันจะช่วยคนอื่นที่พยายามทำความเข้าใจกับเทคนิค) และถามคำถามเพิ่มเติมในภายหลัง เพื่อให้แน่ใจว่าไม่มีความเข้าใจผิดฉันจะใช้สัญลักษณ์มาตรฐานต่อไปนี้: , , ,และในกระดาษเพื่อแสดงถึงกฎ จำนวนฉันอย่างไรก็ตามฉันอาจใช้ชื่อที่แตกต่างกันสำหรับแนวคิดมากกว่ากระดาษต้นฉบับ, B , C , . . ∈ N . . X , Y , Z ∈ N ∪ T α , β , γ , . . ∈ { N ∪ T } * ฉัน …

3
การปรับเปลี่ยนอัลกอริธึมของ Dijkstra สำหรับน้ำหนักขอบที่ดึงจากช่วง
สมมติว่าฉันมีกราฟกำกับที่มีน้ำหนักขอบถูกดึงมาจากช่วง[1,…,K][1,…,K][1,\dots, K]โดยที่KKKคงที่ หากฉันพยายามค้นหาเส้นทางที่สั้นที่สุดโดยใช้อัลกอริทึมของ Dijkstraฉันจะแก้ไขอัลกอริทึม / โครงสร้างข้อมูลและปรับปรุงความซับซ้อนของเวลาเป็นO(|V|+|E|)O(|V|+|E|)O(|V|+|E|)อย่างไร

1
ปัญหาการมอบหมายเป็นเวลาหลายวัน
ฉันมีปัญหาที่สามารถลดปัญหาการมอบหมาย (ในคำถามก่อนหน้านี้ฉันพบวิธีการดังกล่าว) ซึ่งหมายความว่าเรามีชุดของตัวแทนและชุดของงานเช่นเดียวกับฟังก์ชั่นค่าใช้จ่ายJ) เราต้องหางานที่ได้รับมอบหมายเพื่อให้ค่าใช้จ่ายทั้งหมดน้อยAAATTTc(i,j)c(i,j)c(i,j) อัลกอริทึมฮังการีสามารถหาทางออกที่ดีที่สุดในเวลาอย่างน้อย4) ซึ่งฟังดูดีสำหรับฉันO(n4)O(n4)O(n^4) ปัญหาใหม่ของฉันคือ: มีจำนวนวันที่กำหนด ผมต้องแก้ปัญหาที่ได้รับมอบหมายในแต่ละวันเพื่อให้งานทุกคนจะทำทุกวันและตัวแทนจะไม่มีงานเดียวกันสองครั้ง สิ่งที่ฉันได้ลอง: เราสามารถเรียกใช้อัลกอริธึมของฮังการีแยกกันในแต่ละวันและ จำกัด จำนวนของชุดค่าผสมที่เป็นไปได้ตามผลลัพธ์ของวันก่อนหน้า แต่สิ่งนี้จะทำให้เราเดือดร้อนในบางวันต่อมาซึ่งเป็นไปได้ยากที่จะหาวิธีแก้ปัญหาที่เป็นไปได้ อีกแนวคิดหนึ่งคือการรวมการค้นหาในท้องถิ่นเข้ากับการเปลี่ยนแปลงการตัดสินใจในวันก่อนหน้า แต่ฉันคิดว่าเราไม่สามารถวางใจได้ อินสแตนซ์ปัญหาที่ฉันต้องเผชิญจะอยู่ที่ใดที่หนึ่ง500 เมทริกซ์ต้นทุนจะมีค่าเท่ากันจำนวนมาก (เช่นส่วนใหญ่ 1 หรืออินฟินิตี้เพียงบาง 2 หรือ 3) ดังนั้นระหว่างอัลกอริธึมของฮังการีจึงมีพื้นที่มากมายในการสร้างโซลูชันที่ดีที่สุดที่แตกต่างกันในหนึ่งวัน|A|=|T|=500|A|=|T|=500|A| = |T| = 500C(i,j)C(i,j)C(i,j) ฉันยินดีที่จะรับฟังแนวคิดหรือคำแนะนำวิธีหาวิธีแก้ไขปัญหาที่ดี ขอบคุณล่วงหน้า.

2
อัลกอริทึมการจับคู่สตริง k ไม่ตรงกันอย่างรวดเร็ว
ฉันกำลังมองหาอัลกอริทึมการจับคู่สตริง k-mismatch ที่รวดเร็ว กำหนดสตริงรูปแบบ P ของความยาว m และสตริงข้อความ T ของความยาว n, ฉันต้องการอัลกอริทึม (เชิงเส้นเวลา) ที่รวดเร็วเพื่อค้นหาตำแหน่งทั้งหมดที่ P ตรงกับสตริงย่อยของ T กับ k ไม่ตรงกันมากที่สุด สิ่งนี้แตกต่างจากปัญหาความแตกต่างของ k (ระยะทางแก้ไข) ไม่ตรงกันหมายถึงสตริงย่อยและรูปแบบมีตัวอักษรที่แตกต่างกันในตำแหน่ง k มากที่สุด ฉันต้องการเพียง k = 1 (มากที่สุด 1 ไม่ตรงกัน) ดังนั้นอัลกอริทึมที่รวดเร็วสำหรับกรณีเฉพาะของ k = 1 ก็จะเพียงพอเช่นกัน ขนาดตัวอักษรคือ 26 (ตัวพิมพ์เล็กและตัวพิมพ์เล็ก) ดังนั้นความต้องการพื้นที่ไม่ควรเติบโตเร็วเกินไปเมื่อเทียบกับขนาดของตัวอักษร (เช่นอัลกอริทึม FAAST ฉันเชื่อว่าใช้พื้นที่ชี้แจงแทนขนาดตัวอักษรและอื่น ๆ เหมาะสำหรับลำดับโปรตีนและยีนเท่านั้น) วิธีการเขียนโปรแกรมแบบไดนามิกที่ใช้มีแนวโน้มที่จะเป็น O (mn) …

1
Micro-optimization สำหรับการคำนวณระยะทางแก้ไข: ถูกต้องหรือไม่
บนWikipedia จะมีการติดตั้งชุดรูปแบบการเขียนโปรแกรมแบบไดนามิกจากล่างขึ้นบนสำหรับระยะแก้ไข ไม่ปฏิบัติตามคำจำกัดความอย่างสมบูรณ์ เซลล์ภายในจะถูกคำนวณดังนี้: if s[i] = t[j] then d[i, j] := d[i-1, j-1] // no operation required else d[i, j] := minimum ( d[i-1, j] + 1, // a deletion d[i, j-1] + 1, // an insertion d[i-1, j-1] + 1 // a substitution ) } อย่างที่คุณเห็นอัลกอริทึมจะเลือกค่าจากเพื่อนบ้านบนซ้ายถ้ามีการจับคู่การบันทึกการเข้าถึงหน่วยความจำการดำเนินการ ALU และการเปรียบเทียบ …

2
การกำหนดหมายเลขเฉพาะในเวลาและพื้นที่ (กรณีที่แย่ที่สุด)
\newcommand\ldotd{\mathinner{..}}ระบุว่าA[1..n]A[1..n]A[1\ldotd n]เป็นจำนวนเต็มเช่น0≤A[k]≤m0≤A[k]≤m0\le A[k]\le mสำหรับ1≤k≤n1≤k≤n1\le k\le nทั้งหมดและการเกิดขึ้นของแต่ละรายการ หมายเลขยกเว้นหมายเลขเฉพาะในA[1..n]A[1..n]A[1\ldotd n]เป็นเลขคี่ พยายามค้นหาหมายเลขที่มีเหตุการณ์เป็นเลขคู่ มีอัลกอริทึมΘ(nlogn)Θ(nlog⁡n)\Theta(n\log n) : เราจัดเรียงA[1..n]A[1..n]A[1\ldotd n]เป็นB[1..n]B[1..n]B[1\ldotd n]และแบ่งB[1..n]B[1..n]B[1\ldotd n]ออกเป็นหลาย ๆ ชิ้นซึ่งค่าขององค์ประกอบคือ เหมือนกันดังนั้นเราสามารถนับการเกิดขึ้นของแต่ละองค์ประกอบ ฉันต้องการค้นหาอัลกอริธึมที่แย่ที่สุด - O(n)O(n)O(n) -time-and- O(n)O(n)O(n) -space สมมติว่าm=Ω(n1+ϵ)m=Ω(n1+ϵ)m=\Omega(n^{1+\epsilon})และϵ&gt;0ϵ&gt;0\epsilon>0ดังนั้นการเรียงลำดับของ Radix จึงไม่เป็นที่ยอมรับ \DeclareMathOperator{\xor}{xor} ไบนารี Bitwise การดำเนินงานเป็นที่ยอมรับเช่นA[1]xorA[2]A[1]xor⁡A[2]A[1]\xor A[2][2]

1
การกำหนดความคล้ายคลึงกันของสตริงที่กำหนดให้กับชุดของสตริง
ฉันไม่แน่ใจว่าคำถามนี้เป็นของที่นี่และฉันขอโทษถ้าไม่ได้ สิ่งที่ฉันต้องการทำคือการพัฒนาวิธีการเขียนโปรแกรมที่ฉันสามารถตรวจสอบความน่าจะเป็นว่าสตริงที่กำหนด "เป็น" ในถุงของสตริง ตัวอย่างเช่นถ้าฉันมีชื่อเมือง 10,000 ชื่อในอเมริกาและมีสตริง "ฟิลาเดลเฟีย" ฉันต้องการวัดเชิงปริมาณของโอกาสที่ 'ฟิลาเดลเฟีย' เป็นชื่อเมืองในสหรัฐอเมริกาตามชื่อเมืองที่ฉันรู้จัก ในขณะที่ฉันรู้ว่าฉันจะไม่สามารถแยกชื่อเมืองจริงออกจากชื่อเมืองปลอมในบริบทนี้อย่างน้อยฉันก็คาดหวังว่าจะมีสตริงเช่น "123.75" และ "สุนัขจิ้งจอกสีแดงอย่างรวดเร็วกระโดดข้ามสุนัขสีน้ำตาลขี้เกียจ" ยกเว้น เกณฑ์บางอย่าง ในการเริ่มต้นฉันดูที่ Levenshtein Distance และแหย่เล็กน้อยเกี่ยวกับวิธีการนำไปใช้กับปัญหาอย่างน้อยค่อนข้างคล้ายกับที่ฉันพยายามแก้ไข แอปพลิเคชั่นที่น่าสนใจอย่างหนึ่งที่ฉันค้นพบคือการตรวจจับการลอกเลียนแบบโดยมีกระดาษหนึ่งเล่มอธิบายว่าระยะทางของ Levenshtein ถูกนำไปใช้กับอัลกอริทึม Smith-Waterman ที่แก้ไขเพื่อทำคะแนนเอกสารได้อย่างไร คำถามของฉันคือถ้าใครสามารถชี้ให้ฉันไปในทิศทางที่ถูกต้องกับอัลกอริทึมหรือวิธีการอื่นที่อาจช่วยฉันได้ ฉันรู้สึกว่านี่อาจเป็นปัญหาที่บางคนในอดีตพยายามแก้ไข แต่จนถึงตอนนี้ Google-fu ของฉันก็ล้มเหลวฉัน

2
ฉันจะทดสอบได้อย่างไรว่ารูปหลายเหลี่ยมนั้นมีโทนสีเดียวกับเส้นตรงหรือไม่?
เป็นที่รู้จักกันดีว่ารูปหลายเหลี่ยมทางเดียวมีบทบาทสำคัญในรูปหลายเหลี่ยมรูปสามเหลี่ยม คำจำกัดความ:รูปหลายเหลี่ยมในระนาบเรียกว่าเสียงเดียวที่เกี่ยวกับเส้นตรงLถ้าทุกมุมฉากเป็นLตัดกับPมากที่สุดสองครั้งPPPLLLLLLPPP กำหนดเส้นและรูปหลายเหลี่ยมPมีอัลกอริทึมที่มีประสิทธิภาพในการพิจารณาว่ารูปหลายเหลี่ยมPเป็นเสียงเดียวที่เกี่ยวกับLหรือไม่?LLLPPPPPPLLL

1
ขอบเขตล่างสำหรับการค้นหาองค์ประกอบที่เล็กที่สุด kth โดยใช้อาร์กิวเมนต์ที่เป็นปฏิปักษ์
ในหลายตำราที่ถูกผูกไว้ที่ต่ำกว่าสำหรับการหา TH องค์ประกอบที่เล็กที่สุดที่ได้มาทำให้การใช้งานของข้อโต้แย้งโดยใช้มีเดีย ฉันจะหาคนโดยใช้การโต้แย้งจากศัตรูได้อย่างไร?kkk Wikipediaบอกว่าอัลกอริทึมทัวร์นาเมนต์ทำงานในและn - k + ∑ n j = n + 2 - k ⌈ lgO(n+klogn)O(n+klog⁡n)O(n+k\log n)ถูกกำหนดให้เป็นขอบเขตล่างn−k+∑nj=n+2−k⌈lgj⌉n−k+∑j=n+2−kn⌈lgj⌉n - k + \sum_{j = n+2-k}^{n} \lceil{\operatorname{lg}\, j}\rceil

1
วิธีค้นหาเส้นชั้นความสูงสำหรับขั้นตอนวิธีกำจัดเส้นที่ซ่อนอยู่ของ Appel
เพื่อความสนุกสนานฉันกำลังพยายามที่จะทำให้ผู้ชมลวดกรอบสำหรับDCPU-16 ฉันเข้าใจวิธีการทำทุกอย่างยกเว้นวิธีซ่อนเส้นที่ซ่อนอยู่ในโครงลวด คำถามทั้งหมดที่นี่เพื่อให้ทุกคนคิดว่าคุณมีการเข้าถึง OpenGL โชคไม่ดีที่ฉันไม่สามารถเข้าถึงอะไรเช่นนั้นสำหรับ DCPU-16 (หรือการเร่งความเร็วฮาร์ดแวร์ใด ๆ ) ผมพบว่าคำอธิบายที่ดีเป็นธรรมของขั้นตอนวิธีการแตะบนGoogle หนังสือ อย่างไรก็ตามมีปัญหาหนึ่งที่ฉันมีปัญหาในการหา Appel กำหนดเส้นชั้นความสูงเป็นขอบที่แบ่งปันโดยรูปหน้าด้านหน้าและรูปหลายเหลี่ยมแบบหันหน้าไปทางด้านหลังหรือไม่ใช้ร่วมกันของรูปหลายเหลี่ยมแบบหันหน้าไปทางด้านหน้าที่ไม่ได้เป็นส่วนหนึ่งของรูปหลายเหลี่ยมแบบปิด ขอบที่แบ่งปันกันโดยรูปหลายเหลี่ยมสองหน้าทำให้ไม่มีการเปลี่ยนแปลงในการมองเห็นดังนั้นจึงไม่ใช่เส้นชั้นความสูง ในรูปที่ 8.4 ขอบ AB, EF, PC, GK และ CH เป็นเส้นชั้นความสูงส่วนขอบ ED, DC และ GI ไม่ใช่ ฉันเข้าใจกฎของอัลกอริทึมและวิธีการทำงานเมื่อคุณมีเส้นชั้นความสูงของคุณ แต่ฉันไม่เข้าใจว่าเป็นสิ่งที่ฉันต้องทำเพื่อตรวจสอบว่าขอบเป็น "ใช้ร่วมกันโดยด้านหน้าและรูปหลายเหลี่ยมด้านหลังหรือ ขอบที่ไม่ได้ใช้ร่วมกันของรูปหลายเหลี่ยมด้านหน้าที่ไม่ได้เป็นส่วนหนึ่งของรูปหลายเหลี่ยมปิด "จากมุมมองการเข้ารหัส ฉันสามารถดูรูปร่างและรู้ว่าเส้นใดเป็นเส้นชั้นความสูงในหัวของฉัน แต่ฉันไม่มีเงื่อนงำเกี่ยวกับวิธีการถ่ายโอน "ความเข้าใจ" นั้นไปยังอัลกอริธึมการเข้ารหัส ปรับปรุง ฉันมีความคืบหน้าในการกำหนดเส้นชั้นความสูง ฉันพบบันทึกการบรรยายทั้งสองนี้ จากชั้นเรียน University of Buffalo ในคอมพิวเตอร์กราฟิก พิจารณาขอบ สิ่งเหล่านี้แบ่งออกเป็นสามประเภท ขอบที่รวมเข้าด้วยกันสองใบหน้าที่มองไม่เห็นนั้นมองไม่เห็น …

1
ในการ จำกัด การเขียนโปรแกรมมีรุ่นใดบ้างที่คำนึงถึงจำนวนการเปลี่ยนแปลงของตัวแปร
พิจารณาโมเดล CSP ที่การเปลี่ยนค่าของตัวแปรเฉพาะนั้นมีราคาแพง มีงานใดบ้างที่ฟังก์ชั่นวัตถุประสงค์ยังพิจารณาจำนวนการเปลี่ยนแปลงในค่าของตัวแปรในระหว่างกระบวนการค้นหาหรือไม่? ตัวอย่าง: ตัวแปรที่มีราคาแพงต่อการเปลี่ยนแปลงอาจอยู่ในการควบคุมของเอเจนต์อื่นและมีค่าใช้จ่ายที่เกี่ยวข้องกับเอเจนต์นั้นเพื่อเปลี่ยนตัวแปร อีกตัวอย่าง: ตัวแปรมีส่วนร่วมในข้อ จำกัด ข้อใดข้อหนึ่งและความพึงพอใจของข้อ จำกัด นี้เกี่ยวข้องกับการเรียกใช้ฟังก์ชันที่มีราคาแพง (เช่นเครื่องจำลอง) เช่นคือข้อ จำกัด และเป็นราคาแพง - ฟังก์ชั่นการคำนวณ ดังนั้นและเป็นตัวแปรราคาแพงที่เปลี่ยนแปลงf x yz=f(x,y)z=f(x,y)z = f(x, y)fffxxxyyy

2
การสั่งซื้อองค์ประกอบเพื่อให้องค์ประกอบบางอย่างไม่ได้อยู่ระหว่างคนอื่น
ได้รับจำนวนเต็มnnnและเซตของจำนวนเต็มสามเท่าของจำนวนเต็ม ค้นหาอัลกอริธึมที่พบการเปลี่ยนแปลงของเซตเช่นนั้น หรือกำหนดอย่างถูกต้องว่าไม่มีการเปลี่ยนแปลงดังกล่าว อย่างเป็นทางการน้อยเราต้องการเรียงลำดับหมายเลข 1 ถึงอีกครั้ง แต่ละสามในระบุว่าต้องปรากฏก่อนkในลำดับใหม่ แต่jต้องไม่ปรากฏระหว่างiπS⊆{(i,j,k)∣1≤i,j,k≤n,i≠j,j≠k,i≠k},S⊆{(i,j,k)∣1≤i,j,k≤n,i≠j,j≠k,i≠k},S \subseteq \{(i, j, k) \mid 1\le i,j,k \le n, i \neq j, j \neq k, i \neq k\},ππ\pi{1,2,…,n}{1,2,…,n}\{1, 2, \dots, n\}(i,j,k)∈S⟹(π(j)&lt;π(i)&lt;π(k)) ∨ (π(i)&lt;π(k)&lt;π(j))(i,j,k)∈S⟹(π(j)&lt;π(i)&lt;π(k)) ∨ (π(i)&lt;π(k)&lt;π(j))(i,j,k) \in S \implies (\pi(j)<\pi(i)<\pi(k)) ~\lor~ (\pi(i)<\pi(k)<\pi(j))nnn(i,j,k)(i,j,k)(i,j,k)SSSiiikkkjjjiiiและkkk . ตัวอย่างที่ 1 สมมติว่าn=5n=5n=5และS={(1,2,3),(2,3,4)}S={(1,2,3),(2,3,4)}S = \{(1,2,3), (2,3,4)\}\} แล้วก็ π=(5,4,3,2,1)π=(5,4,3,2,1)\pi = (5, …

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