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

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

1
เราสามารถหาเส้นทางที่สั้นที่สุดระหว่างทุกคู่ได้เร็วกว่าการแก้ปัญหาที่เกิดขึ้นซ้ำ ๆ กันหรือไม่?
ฉันต้องการสร้างเส้นทางที่สั้นที่สุด (จะน้อยกว่า 10) ระหว่างคู่ทั้งหมดในกราฟ กราฟคือ (จริง ๆ แล้วเป็นแผนที่รถไฟใต้ดิน):kkkkkk ถ่วงน้ำหนักในเชิงบวก ไม่มีทิศทาง เบาบาง มีประมาณ 100 โหนด แผนปัจจุบันของฉันคือการใช้เส้นทางที่สั้นที่สุดการกำหนดเส้นทางกับแต่ละคู่ ตอนนี้ฉันกำลังมองหาทางเลือกที่มีประสิทธิภาพมากขึ้น (อาจจะด้วยการเขียนโปรแกรมแบบไดนามิก)kkk

1
ค้นหาการวนซ้ำที่ยาวที่สุด
กำหนดสตริงผมอยากจะหาที่ยาวที่สุดในการทำซ้ำ (อย่างน้อยสองครั้ง) subsequence นั่นคือผมอยากจะพบสตริงซึ่งเป็น subsequence (ที่ไม่จำเป็นต้องเป็นที่ต่อเนื่องกัน) ของเช่นว่าw' นั่นคือคือสตริงที่แบ่งครึ่งปรากฏเป็นสองเท่าในแถว โปรดทราบว่าคือองค์ประกอบของแต่ไม่จำเป็นต้องเป็นสตริงย่อยssswwwsssw=w′⋅w′w=w′⋅w′w=w' \cdot w' wwwwwwsss ตัวอย่าง: สำหรับ 'ababccabdc' มันจะเป็น 'abcabc' เพราะ 'abc' = 'abc' และ 'abc' จะปรากฏขึ้น (อย่างน้อย) สองครั้งใน 'ababccabdc' สำหรับ 'addbacddabcd' ตัวเลือกหนึ่งคือ 'dddd' เพราะ 'dd' ปรากฏขึ้นสองครั้ง (ฉันไม่สามารถใช้ตัวอักษรเดียวกันหลาย ๆ ครั้งได้ แต่ที่นี่ฉันมี 4 'd ดังนั้นมันก็โอเค) แต่มันก็ดีกว่า 4 ความยาว 8: 'abcdabcd' เนื่องจาก 'abcd' เป็นซับสตริงของ 'addbacddabcd' …

3
วิธีแก้ปัญหาการจัดการที่ Archive Nationale of France โดยใช้ทฤษฎีกราฟ?
สวัสดีตอนเย็น! จริงๆแล้วฉันกำลังฝึกงานที่ Archives Nationales of France และฉันพบสถานการณ์ที่ฉันต้องการแก้ปัญหาโดยใช้กราฟ ... I. สถานการณ์ที่เต็มไปด้วยฝุ่น เราต้องการเพิ่มประสิทธิภาพการจัดเรียงหนังสือในห้องสมุดของฉันตามความสูงเพื่อลดต้นทุนการเก็บถาวร ความสูงและความหนาของหนังสือเป็นที่รู้จัก เราได้จัดเรียงหนังสือตามลำดับความสูง (ฉันไม่รู้ว่ามันเป็นสิ่งที่ดีที่สุด แต่ ... นั่นคือวิธีที่เราทำ) เมื่อทราบความหนาของหนังสือแต่ละเล่มเราสามารถกำหนดความหนาที่จำเป็นสำหรับแต่ละชั้นสำหรับการจัดเรียงเรียกว่า (ตัวอย่างเช่นหนังสือที่สูงอาจมีความหนารวม )H1,H2, … ,HnH1,H2,…,HnH_1,H_2,\dots,H_nHผมHiH_iLผมLiL_iHผม= 23คเมตรHi=23cmH_i = 23\,\mathrm{cm}Lผม= 300คเมตรLi=300cmL_i = 300\,\mathrm{cm} ห้องสมุดสามารถผลิตชั้นวางที่กำหนดเองโดยระบุความยาวและความสูงที่ต้องการ ชั้นวางของความสูงและความยาวค่าใช้จ่าย โดยที่เป็นต้นทุนคงที่และคือต้นทุนของชั้นวางต่อหน่วยความยาวHผมHiH_ixผมxix_iFผม+คผมxผมFi+CixiF_i+C_ix_iFผมFiF_iคผมCiC_i โปรดทราบว่าการเก็บรักษาของความสูงสามารถใช้ในการเก็บหนังสือของความสูง กับฉัน เราต้องการลดต้นทุนHผมHiH_iHJHjH_jj ≤ ฉันj≤ij\leq i ผู้สอนของฉันแนะนำว่าฉันทำแบบจำลองปัญหานี้เป็นปัญหาในการค้นหาเส้นทาง รูปแบบที่อาจเกี่ยวข้องกับการจุดจัดทำดัชนีแบบฟอร์มเพื่อnพี่เลี้ยงของฉันแนะนำให้ผมทำงานออกเงื่อนไขที่มีอยู่แต่ละขอบหมายและวิธีการในการทำงานจากการประเมินค่าที่เกี่ยวข้องกับขอบj) ฉันก็จะตกลงกับโซลูชั่นอื่น ๆ เช่นเดียวกับข้อมูลเชิงลึกn + 1n+1n+1000nnnv ( i , j )v(i,j)v(i,j)( i …

1
คุณพิจารณาจำนวนข้อผิดพลาดในอัลกอริทึม Welch-Berlekamp อย่างไร
ในอัลกอริทึม Welch-Berlekamp สำหรับการถอดรหัสรหัส Reed-Solomon หนึ่งจะได้รับรายการของจุดแสดงถึงข้อความที่มีข้อผิดพลาดในในสถานที่ที่ไม่รู้จัก (และมอบให้กับอัลกอริทึม) ผลลัพธ์คือพหุนามผ่านจุดที่กำหนดทั้งหมดยกเว้นที่เกิดข้อผิดพลาด(ai,bi)(ai,bi)(a_i, b_i)eeebibib_ieee วิธีนี้เกี่ยวข้องกับการแก้ระบบสมการเชิงเส้นของแบบฟอร์ม biE(ai)=Q(ai)biE(ai)=Q(ai)b_i E(a_i) = Q(a_i) สำหรับทุกที่มีปริญญาและมีการศึกษาระดับที่มากที่สุด k ตัวแปรที่มีค่าสัมประสิทธิ์ของและQiiiEEEeeeQQQe+ke+ke+kEEEQQQ เพื่อให้แน่ใจว่ามีระดับหนึ่งมักจะเพิ่มข้อ จำกัด ที่สัมประสิทธิ์ของเป็น 1 กับระบบเชิงเส้นด้านบน แต่ในทางปฏิบัติอย่างใดอย่างหนึ่งไม่จำเป็นต้องรู้ว่าอีวิธีหนึ่งที่ไม่มีประสิทธิภาพ (แต่ยังคงเป็นพหุนาม) วิธีที่จะจัดการกับสิ่งนี้คือลองสำหรับค่าทั้งหมดที่เริ่มต้นด้วยจะลดลงจนกว่าจะพบวิธีแก้ปัญหาEEEeeexexex^eeeeeee(n+k−1)/2−1(n+k−1)/2−1(n+k-1)/2 - 1 คำถามของฉันคือ: มีวิธีที่มีประสิทธิภาพมากขึ้นเพื่อกำหนด ? eeeอีกวิธีหนึ่งมีการปรับเปลี่ยนระบบเชิงเส้นที่อนุญาตให้หนึ่งใช้ขอบเขตบนบนแทนค่าที่แน่นอน?eee โดยเฉพาะฉันต้องการใช้ตัวถอดรหัสนี้สำหรับรหัส Reed-Solomon และไม่ใช่อัลกอริทึมที่แตกต่างอย่างสิ้นเชิงตามเทคนิคอื่น ๆ เพื่อตอบสนองต่อคำตอบของ DW นี่คือตัวอย่างการทำงานของฉัน ทุกอย่างเสร็จสิ้นแบบโมดูโล 7 plain message is: [2, 3, 2] polynomial is: 2 + 3 …

1
ภาพถ่ายระนาบย่อยที่หนักที่สุด
พิจารณาปัญหาต่อไปนี้ ป.ร. ให้ไว้: กราฟที่สมบูรณ์ที่มีน้ำหนักที่ไม่เป็นลบจริงบนขอบ ภารกิจ: ค้นหากราฟย่อยของน้ำหนักสูงสุด ("สูงสุด" ในบรรดากราฟย่อยระนาบที่เป็นไปได้ทั้งหมด) หมายเหตุ: กราฟย่อยน้ำหนักสูงสุดจะเป็นรูปสามเหลี่ยม ถ้ากราฟทั้งหมดเปิดอยู่nnn จุดยอดก็จะมี m = 3 n - 6ม.=3n-6m=3n-6 ขอบ คำถาม: อัลกอริทึมที่ดีที่สุดสำหรับปัญหานี้คืออะไร ความซับซ้อนของเวลาคืออะไร

4
ค้นหาเลขจำนวนเต็มสองตัวที่ใหญ่ที่สุดในห้าตัวโดยเร็วที่สุด
ฉันใช้รูปแบบของตัวกรองมัธยฐาน 5 ข้ามบนข้อมูลภาพบนระบบฝังตัวขนาดเล็กเช่น x x x x x อัลกอริทึมนั้นง่ายมาก: อ่านค่าจำนวนเต็ม 5 ค่าที่ได้รับ 2 ได้ทำการคำนวณสูงสุดแล้วเขียนผลจำนวนเต็มที่ไม่ได้ลงนาม สิ่งที่ดีคือค่าอินพุตจำนวนเต็ม 5 ค่าทั้งหมดอยู่ในช่วง 0-20 ค่าจำนวนเต็มจากการคำนวณยังอยู่ในช่วง 0-20! จากการทำโปรไฟล์ฉันพบว่าการได้ตัวเลขสองตัวที่ใหญ่ที่สุดคือคอขวดดังนั้นฉันจึงอยากให้ส่วนนี้เร็วขึ้น วิธีที่เร็วที่สุดในการทำการเลือกนี้คืออะไร? อัลกอริทึมปัจจุบันใช้มาสก์ 32 บิตที่มี 1 ในตำแหน่งที่กำหนดโดยตัวเลข 5 ตัวและฟังก์ชั่น CLZ ที่รองรับ HW ฉันควรจะบอกว่าซีพียูเป็นกรรมสิทธิ์ไม่สามารถใช้งานได้นอก บริษัท ของฉัน คอมไพเลอร์ของฉันคือ GCC แต่ปรับแต่งสำหรับ CPU นี้ ฉันลองคิดดูว่าฉันสามารถใช้ตารางการค้นหาได้หรือไม่ แต่ฉันไม่สามารถสร้างรหัสที่ฉันสามารถใช้ได้ ฉันมีรวมกันสำหรับการป้อนข้อมูลการสั่งซื้อ แต่ไม่ได้เป็นสิ่งที่สำคัญคือเป็นเช่นเดียวกับ21521521^5[5,0,0,0,5][5,5,0,0,0] มันเกิดขึ้นว่าฟังก์ชั่นแฮชด้านล่างสร้างแฮชที่สมบูรณ์แบบโดยไม่มีการชน! def hash(x): h = 0 …

2
อธิบาย SAT ถึงครูวิทยาศาสตร์ระดับมัธยมปลาย
ฉันเป็นนักเรียนมัธยมปลายที่สนใจด้านวิทยาศาสตร์คอมพิวเตอร์ ฉันพัฒนาอัลกอริทึมที่ยอดเยี่ยมสำหรับ #SAT และฉันกำลังใช้งานและทำโครงงานวิทยาศาสตร์ที่เป็นธรรม ที่ปรึกษาของฉันซึ่งเป็นครูสอนวิทยาศาสตร์ที่ดีที่สุดในโรงเรียนของฉันและยังเป็นอาจารย์ AP Comp Sci บอกฉันว่าเธอไม่รู้ว่าโครงการของฉันเป็นอย่างไรและฉันต้องอธิบายเหตุผลสั้น ๆ ว่าทำไม #SAT ถึงเป็น สำคัญในภายใต้ 5 นาที ฉันบอกเธอว่า SAT ลดเหลือ #SAT และพยายามอธิบายว่าทำไม SAT ถึงสำคัญ: ฉันให้ตัวอย่างปัญหา NP แก่เธออธิบายว่าปัญหาใน NP ลดเป็น SAT และอธิบายว่าด้วยการค้นหาแบบไบนารีคุณสามารถลดปัญหาการหาค่าเหมาะที่สุดให้กับ SAT ได้ ซึ่งช่วยให้คุณพับโปรตีนและสร้างแบบจำลอง AI ที่ทรงพลัง น่าเสียดายที่เธอไม่เข้าใจฉันเลย คุณช่วยชี้ให้ฉันหน่อยได้ไหม? ป.ล. ที่ปรึกษาของฉันถามฉันว่าปัญหาที่มีประโยชน์ลดลงเป็น #SAT ที่ไม่ลดลงถึง SAT (สมมติว่าปัญหาบางอย่างใน #P นั้นยากกว่ารุ่น NP ที่สอดคล้องกัน) ทั้งหมดที่ฉันสามารถหาได้คือการหาจำนวนโมเดลสำหรับชุดข้อมูลที่กำหนดนั้นดีกว่าโมเดลที่ระบุ (สมมติว่าพารามิเตอร์แต่ละตัวของโมเดลนั้นเล็กกว่าจำนวนบิตที่กำหนด) ฉันค้นหาคนอื่นบนเว็บ …

4
องค์ประกอบที่ไม่ซ้ำกันสามารถแก้ไขได้ในเวลาเชิงเส้นที่กำหนด?
พิจารณาปัญหาต่อไปนี้: อินพุต : แสดงของจำนวนเต็มX, วายX,YX,Y เป้าหมาย : พิจารณาว่ามีจำนวนเต็มที่อยู่ในทั้งสองรายการหรือไม่xxx สมมติว่าทั้งสองรายการมีขนาดnมีอัลกอริทึมเชิงเส้นเวลาที่กำหนดสำหรับปัญหานี้หรือไม่? คุณสามารถแก้ปัญหานี้ในเวลาแน่นอนโดยไม่ใช้การสุ่มX, วายX,YX,YnnnO ( n )O(n)O(n) น่าเสียดายที่คุณไม่สามารถสรุปได้ว่าองค์ประกอบลิสต์นั้นเล็กทั้งหมด ฉันสามารถดูวิธีการแก้ปัญหาในเวลาที่คาดหวังโดยใช้อัลกอริธึมแบบสุ่ม: สุ่มเลือกฟังก์ชันแฮชแบบ 2 สากลเก็บองค์ประกอบของลงใน hashtable (โดยใช้เป็นฟังก์ชันแฮช) แล้วค้นหา แต่ละองค์ประกอบของเพื่อดูว่ามันอยู่ใน hashtable หรือไม่ เวลาทำงานคาดว่าจะเป็น(n) อย่างไรก็ตามฉันไม่เห็นวิธีการค้นหาอัลกอริทึมที่กำหนดค่าโดยใช้เวลาหากคุณพยายามลดขนาดลงและแก้ไขฟังก์ชันแฮชที่ระบุเพียงอย่างเดียวจะมีอินพุตที่แย่ที่สุดซึ่งทำให้โพรซีเดอร์นี้รันในO ( n )O(n)O(n)ชั่วโมงhhXXXชั่วโมงhhYYYO ( n )O(n)O(n)O ( n )O(n)O(n)Θ (n2)Θ(n2)\Theta(n^2)เวลา. อัลกอริทึมที่ดีที่สุดที่ฉันสามารถหาได้เกี่ยวข้องกับการเรียงลำดับค่า แต่นั่นไม่ใช่เวลาเชิงเส้น เราสามารถใช้เวลาเชิงเส้นตรงได้หรือไม่? นอกจากนี้ฉันสามารถดูวิธีการแก้ปัญหาในเวลาเชิงเส้นถ้าคุณคิดว่าองค์ประกอบรายการทั้งหมดเป็นจำนวนเต็มในช่วง (โดยทั่วไปแล้วจะเรียงลำดับการนับ) - แต่ฉันสนใจในสิ่งที่เกิดขึ้นโดยทั่วไป กรณีเมื่อเราไม่สามารถคิดได้[ 1 , n ][1,n][1,n] หากคำตอบนั้นขึ้นอยู่กับรูปแบบการคำนวณแบบจำลอง …

2
อัลกอริทึมรากที่สองจำนวนเต็มความแม่นยำตามอำเภอใจ?
มีอัลกอริทึมย่อยที่รู้จักกันดีสำหรับการคำนวณพื้นของสแควร์รูทของnจำนวนเต็มบิตหรือไม่? อัลกอริธึมไร้เดียงสานั้นจะเป็นอย่างไร def sqrt(x): r = 0 i = x.bit_length() // 2 while i >= 0: inc = (r << (i+1)) + (1 << (i*2)) if inc <= x: x -= inc r += 1 << i i -= 1 return r สิ่งนี้ต้องใช้O(n)การวนซ้ำแต่ละอันเกี่ยวข้องกับการเพิ่มที่เป็นO(n)เวลาดังนั้นจึงเป็นO(n^2)เวลาโดยรวม มีอะไรเร็วขึ้นไหม ฉันรู้ว่าในกรณีของการคูณมีอัลกอริทึมพิเศษที่ทำได้ดีกว่าเวลากำลังสอง แต่ฉันไม่สามารถหาอะไรสำหรับรากที่สอง

1
อัลกอริทึมและโครงสร้างข้อมูลที่มีประสิทธิภาพที่สุดสำหรับการบำรุงรักษาข้อมูลส่วนประกอบที่เชื่อมต่อบนกราฟแบบไดนามิกคืออะไร
สมมติว่าฉันมีกราฟหร็อมแหร็มไม่ จำกัด ทิศทางและจำเป็นต้องสามารถเรียกใช้แบบสอบถามต่อไปนี้ได้อย่างมีประสิทธิภาพ: ผมs Co n n e c t e d(ยังไม่มีข้อความ1,ยังไม่มีข้อความ2)IsConnected(N1,N2)IsConnected(N_1, N_2) - ส่งคืนหากมีเส้นทางระหว่างถึงมิฉะนั้นTTTยังไม่มีข้อความ1N1N_1ยังไม่มีข้อความ2N2N_2FFF คo n n e c t e dยังไม่มีข้อความo de s ( N)ConnectedNodes(N)ConnectedNodes(N) - ส่งคืนชุดของโหนดที่สามารถเข้าถึงได้จากยังไม่มีข้อความNN สิ่งนี้ทำได้ง่ายโดยการคำนวณส่วนประกอบที่เชื่อมต่อของกราฟไว้ล่วงหน้า คำสั่งทั้งสองสามารถทำงานในเวลาO ( 1 )O(1)O(1) ถ้าฉันยังต้องสามารถเพิ่มขอบโดยพลการ - - จากนั้นฉันสามารถเก็บส่วนประกอบไว้ในโครงสร้างข้อมูลที่ไม่จัดวางได้ เมื่อใดก็ตามที่มีการเพิ่มขอบถ้ามันเชื่อมต่อสองโหนดในองค์ประกอบที่แตกต่างกันฉันจะรวมองค์ประกอบเหล่านั้น สิ่งนี้จะเพิ่มค่าใช้จ่ายให้กับและราคาเป็นและ (ซึ่งอาจเป็น )ddEdก.e (ยังไม่มีข้อความ1,ยังไม่มีข้อความ2)AddEdge(N1,N2)AddEdge(N_1, N_2)O ( 1 )O(1)O(1)ddEdก.อีAddEdgeAddEdgeO ( ฉันn วีอีอาร์เอสอีคk …

1
รับสาย n เป็นหนึ่งในนั้นสตริงย่อยของอื่นหรือไม่
สมมติว่าเราจะได้รับคอลเลกชันของสตริงs_1ฉันต้องการทราบว่าสตริงเหล่านี้เป็นสตริงย่อยของสตริงอื่น ๆ ในคอลเลกชันหรือไม่ กล่าวอีกนัยหนึ่งฉันต้องการอัลกอริทึมสำหรับงานต่อไปนี้:nnnS1,…,SnS1,…,SnS_1,\dots,S_n อินพุต:S1,…,SnS1,…,SnS_1,\dots,S_n เอาท์พุท:ดังกล่าวว่าเป็นย่อยของและหรือไม่หากไม่เช่นที่มีอยู่i,ji,ji,jSiSiS_iSjSjS_ji≠ji≠ji\ne ji,ji,ji,j มีอัลกอริทึมที่มีประสิทธิภาพสำหรับสิ่งนี้หรือไม่? หากเราแทนที่ "substring" ด้วย "คำนำหน้า" จะมีอัลกอริทึมที่มีประสิทธิภาพ (เรียงลำดับสตริงจากนั้นทำการสแกนเชิงเส้นเพื่อเปรียบเทียบสตริงที่อยู่ติดกันการเรียงลำดับจะทำให้แน่ใจว่ามีสตริงย่อยติดกัน) แต่ดูเหมือนจะมีความท้าทายมากขึ้นในการทดสอบว่าสตริงใด ๆ เป็นสตริงย่อยของสตริงอื่น ๆ อัลกอริทึมที่ไร้เดียงสาคือการทำซ้ำในทุกคู่ของแต่ต้องใช้การทดสอบสตริงย่อยมีอัลกอริทึมที่มีประสิทธิภาพมากขึ้นหรือไม่?i,ji,ji,jΘ(n2)Θ(n2)\Theta(n^2) ฉันเดาว่าเราเรียกสิ่งนี้ว่า "การทดสอบสตริงย่อยทุกคู่" หรืออะไรทำนองนั้น เป้าหมายสูงสุดของฉันคือการตัดคอลเลคชั่นดังนั้นจึงไม่มีสตริงย่อยใด ๆ โดยลบแต่ละอันที่เป็นซับสตริงของอย่างอื่นในคอลเลกชัน

1
ปัญหาคืออะไร (การแบ่งกราฟออกเป็นสามส่วน)
ฉันสงสัยว่าปัญหานี้มีชื่อ: ให้กราฟง่าย ๆ ที่มีขอบเป็นสีแดงน้ำเงินและเขียวมีจุดยอดสีเช่นนั้น ขอบทุกอันมีจุดปลายที่มีสีเดียวกันG=(V,B∪R∪G)G=(V,B∪R∪G)G=(V,B\cup R\cup G)c:V→{B,R,G}c:V→{B,R,G}c:V\to \{B,R,G\} นอกจากนี้ยังเป็นที่รู้จักกันว่าเป็น NP-complete? สิ่งนี้สามารถถูกมองว่าเป็นกรณีพิเศษของ CSP (หรือการวางนัยทั่วไปของ 2SAT) โดยที่แต่ละข้อ จำกัด เป็นการแยกความแตกต่างของตัวแปร 2 ตัวที่สามารถรับหนึ่งในสามค่าและไม่มีข้อ จำกัด สองประการในคู่ตัวแปรเดียวกัน

1
การหา GCD สูงสุดตามลำดับสูงสุดของชุดตัวเลขธรรมชาติอย่างมีประสิทธิภาพ
พิจารณาปัญหาต่อไปนี้: ปล่อย S= {s1,s2, . . .sn}S={s1,s2,...sn}S = \{ s_1, s_2, ... s_n \} เป็นเซตย่อยของตัวเลขธรรมชาติ ให้ | โดยที่เป็นตัวหารร่วมมากที่สุดของและG = {G={G = \{ ก.คd(sผม,sJ)gcd(si,sj)gcd(s_i, s_j)sผม,sJ∈ S,si,sj∈S,s_i, s_j \in S, sผม≠sJ}si≠sj} s_i \neq s_j \}ก.คd( x , y)gcd(x,y)gcd(x,y)xxxYyy ค้นหาองค์ประกอบสูงสุดของGGGG ปัญหานี้สามารถแก้ไขได้โดยการใช้ตัวหารสามัญที่ยิ่งใหญ่ที่สุดของแต่ละคู่โดยใช้อัลกอริทึมของ Euclid และติดตามตัวที่ใหญ่ที่สุด มีวิธีที่มีประสิทธิภาพมากขึ้นในการแก้ปัญหานี้หรือไม่?

1
มีอัลกอริทึมใดในการแก้ระบบเชิงเส้นจำนวนธรรมชาติ?
ฉันกำลังดูปัญหาต่อไปนี้: ได้รับมิติเวกเตอร์ของจำนวนธรรมชาติและบางเวกเตอร์อินพุตเป็นรวมกันเชิงเส้นของ 's มีค่าสัมประสิทธิ์จำนวนธรรมชาติ?nnnโวลต์1, … ,โวลต์ม.v1,…,vmv_1, \ldots, v_mยูuuยูuuโวลต์ผมviv_i นั่นคือมีบางโดยที่ ?t1,…,tm∈Nt1,…,tm∈Nt_1, \ldots, t_m \in \mathbb{N}u=t1v1+⋯+tmvmu=t1v1+⋯+tmvmu = t_1 v_1 + \dots + t_m v_m แน่นอนว่าปัญหานี้สามารถแก้ไขได้โดยใช้การกำจัดแบบเกาส์ ฉันสงสัยว่ามีการศึกษาปัญหาจำนวนเต็มนี้หรือไม่ มีอัลกอริทึมใดบ้างที่สามารถแก้ไขได้? โปรดทราบว่านี่คือการใช้ตัวเลขธรรมชาติ แต่ไม่ใช่เลขคณิตแบบแยกส่วนดังนั้นจึงค่อนข้างแยกจากทฤษฎีบท Remainder ของจีนและระบบเช่นนี้ นอกจากนี้ดูเหมือนว่าจะเกี่ยวข้องกับสมการไดโอแฟนไทน์ แต่ฉันสงสัยว่าเกิดอะไรขึ้นในกรณีที่พิจารณาเฉพาะจำนวนเต็มที่ไม่เป็นลบ นี่เป็นการเตือนความจำของปัญหาผลรวมย่อยหลายมิติโดยทั่วไปเพื่อให้เราสามารถคัดลอกจำนวนของแต่ละเวกเตอร์โดยพลการ นอกจากนี้ยังดูเหมือนว่าเกี่ยวข้องกับการทดสอบว่าเป็นองค์ประกอบของขัดแตะที่สร้างขึ้นโดย ,ยกเว้นว่าที่นี่เราอนุญาตให้ใช้การผสมแบบเชิงเส้นกับค่าสัมประสิทธิ์ที่ไม่เป็นลบเท่านั้นuuuv1,…,vmv1,…,vmv_1,\dots,v_m สำหรับทุกคนที่สนใจนี้เป็นแรงบันดาลใจโดยดูที่ไม่ว่าจะเป็นเวกเตอร์ Parikh อยู่ในชุดเชิงเส้นในขณะที่Parikh ทฤษฎีบท โดยเฉพาะอย่างยิ่งฉันสนใจอัลกอริทึมที่สามารถแก้ปัญหาโดยใช้การดำเนินการกับจำนวนธรรมชาติเท่านั้น

1
เหตุใด introsort จึงใช้ heapsort แทนที่จะรวมกัน
เป็นส่วนหนึ่งของการบ้านที่ครอบคลุมการใช้งานIntrosortฉันถูกถามว่าทำไมใช้ heapsort มากกว่าการรวม (หรืออื่น ๆO ( n บันทึก( n ) )O(nเข้าสู่ระบบ⁡(n))O(n\log(n)) อัลกอริทึมสำหรับเรื่องนั้น) Introsort เป็นอัลกอริธึมการเรียงลำดับแบบไฮบริดที่ให้ทั้งประสิทธิภาพเฉลี่ยที่รวดเร็วและ (asymptotically) ประสิทธิภาพที่ดีที่สุดสำหรับกรณีที่เลวร้ายที่สุด มันเริ่มต้นด้วย quicksort และสลับไปที่ heapsort เมื่อความลึกของการเรียกซ้ำเกินกว่าระดับตาม (ลอการิทึมของ) จำนวนองค์ประกอบที่เรียงลำดับ ( Wikipedia , ดึงข้อมูล 2014 - May-06) เหตุผลเดียวที่ฉันคิดได้ก็คือฮีปพอร์ตคือ "ในที่" ... แต่ฉันไม่เข้าใจจริงๆว่าทำไมเรื่องนี้ถึงมีความสำคัญ

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