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

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

13
ทำไมเราถึงตรวจสอบถึงรากที่สองของจำนวนเฉพาะเพื่อตรวจสอบว่ามันเป็นนายก?
ในการทดสอบว่าจำนวนนั้นเป็นจำนวนเฉพาะหรือไม่ทำไมเราจึงต้องทดสอบว่ามันหารได้เพียงแค่ถึงรากที่สองของจำนวนนั้นหรือไม่

26
ตรวจสอบว่าองค์ประกอบทั้งหมดในรายการเหมือนกันหรือไม่
ฉันต้องการฟังก์ชั่นต่อไปนี้: อินพุต :list ผลผลิต : True หากองค์ประกอบทั้งหมดในรายการอินพุตประเมินผลเท่ากันโดยใช้ตัวดำเนินการความเสมอภาคมาตรฐาน False มิฉะนั้น. ประสิทธิภาพ : แน่นอนฉันไม่ต้องการให้เกิดค่าใช้จ่ายที่ไม่จำเป็น ฉันรู้สึกว่ามันจะดีที่สุด: วนซ้ำตามรายการ เปรียบเทียบองค์ประกอบที่อยู่ติดกัน และANDค่าบูลีนผลลัพธ์ทั้งหมด แต่ฉันไม่แน่ใจว่าเป็นวิธีที่ Pythonic ที่สุดที่จะทำ การขาดคุณสมบัติลัดวงจรเพียงเจ็บอินพุตยาว (มากกว่า ~ 50 องค์ประกอบ) ที่มีองค์ประกอบที่ไม่เท่ากันในช่วงต้น หากสิ่งนี้เกิดขึ้นบ่อยครั้งเพียงพอ (ความถี่ขึ้นอยู่กับจำนวนรายการที่อาจจะเกิดขึ้น) จำเป็นต้องใช้ไฟฟ้าลัดวงจร ขั้นตอนวิธีการลัดวงจรที่ดีที่สุดน่าจะเป็น checkEqual1@KennyTM อย่างไรก็ตามมันจ่ายค่าใช้จ่ายที่สำคัญสำหรับสิ่งนี้: มากถึง 20x ในรายการที่เกือบเหมือนประสิทธิภาพ ประสิทธิภาพสูงสุด 2.5x สำหรับรายการสั้น ๆ หากอินพุตยาวที่มีองค์ประกอบไม่เท่ากันต้นไม่เกิดขึ้น (หรือเกิดขึ้นน้อยมาก) ไม่จำเป็นต้องใช้ไฟฟ้าลัดวงจร จากนั้นที่เร็วที่สุดคือโซลูชันของ @Ivo van der Wijk

30
วิธีค้นหารายการคำที่เป็นไปได้จากเมทริกซ์ตัวอักษร [Boggle Solver]
เมื่อเร็ว ๆ นี้ฉันได้เล่นเกมบน iPhone ของฉันชื่อ Scramble คุณบางคนอาจรู้จักเกมนี้ในชื่อว่าเกรงกลัว เป็นหลักเมื่อเกมเริ่มต้นคุณจะได้รับเมทริกซ์ของตัวอักษรดังนี้: F X I E A M L O E W B X A S T U เป้าหมายของเกมคือการหาคำให้มากที่สุดเท่าที่จะทำได้โดยการรวมตัวอักษรเข้าด้วยกัน คุณสามารถเริ่มต้นด้วยตัวอักษรใด ๆ และตัวอักษรทั้งหมดที่ล้อมรอบมันเป็นเกมที่ยุติธรรมและจากนั้นเมื่อคุณย้ายไปยังตัวอักษรถัดไปทุกตัวอักษรที่ล้อมรอบตัวอักษรที่มีเกมที่ยุติธรรม, ยกเว้นตัวอักษรใด ๆ ที่ใช้ก่อนหน้านี้ ดังนั้นในตารางข้างต้นสำหรับตัวอย่างเช่นผมสามารถขึ้นมาด้วยคำพูดLOB, TUX, SEA, FAMEฯลฯ คำต้องมีอย่างน้อย 3 ตัวอักษรและไม่เกินตัว NxN ซึ่งจะเป็น 16 ในเกมนี้ แต่อาจแตกต่างกันในการใช้งานบางอย่าง . ในขณะที่เกมนี้สนุกและน่าติดตาม แต่ฉันไม่เก่งและฉันอยากจะโกงนิดหน่อยด้วยการสร้างโปรแกรมที่จะให้คำศัพท์ที่ดีที่สุดแก่ฉัน (ยิ่งคำยิ่งมีคะแนนมากเท่าไหร่) (ที่มา: boggled.org ) …
376 algorithm  puzzle  boggle 


4
รายการฟังก์ชั่น Big-O สำหรับ PHP
หลังจากใช้ PHP มาระยะหนึ่งผมสังเกตว่าฟังก์ชั่น PHP ในตัวบางตัวนั้นไม่เร็วเท่าที่ควร พิจารณาการประยุกต์ใช้ที่เป็นไปได้ทั้งสองอย่างของฟังก์ชั่นที่ค้นหาว่าตัวเลขนั้นสำคัญเพียงใดโดยใช้อาเรย์แคชของช่วงเวลา //very slow for large $prime_array $prime_array = array( 2, 3, 5, 7, 11, 13, .... 104729, ... ); $result_array = array(); foreach( $prime_array => $number ) { $result_array[$number] = in_array( $number, $large_prime_array ); } //speed is much less dependent on size of $prime_array, and …

16
เมื่อใดจึงจะใช้การค้นหาความลึกครั้งแรก (DFS) กับการค้นหาความกว้างระดับแรก (BFS) [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการในวันที่ 13 ที่ผ่านมา ปรับปรุงคำถามนี้ ฉันเข้าใจความแตกต่างระหว่าง DFS และ BFS แต่ฉันสนใจที่จะรู้ว่ามันใช้งานได้ดีกว่ากันหรือไม่? ใครช่วยยกตัวอย่างของวิธีการที่ DFS จะกล้าหาญ BFS และในทางกลับกัน?

22
ตรวจสอบว่าสี่เหลี่ยมสองรูปทับกันหรือไม่
ฉันพยายามเขียนโปรแกรม C ++ ที่รับอินพุตต่อไปนี้จากผู้ใช้เพื่อสร้างรูปสี่เหลี่ยมผืนผ้า (ระหว่าง 2 และ 5): ความสูงความกว้าง x-pos, y-pos สี่เหลี่ยมเหล่านี้ทั้งหมดจะมีขนานกับแกน x และ y นั่นคือขอบทั้งหมดของพวกเขาจะมีความชัน 0 หรืออินฟินิตี้ ฉันพยายามใช้สิ่งที่กล่าวถึงในนี้คำถามแต่ฉันไม่มีโชคมาก การใช้งานปัจจุบันของฉันทำดังต่อไปนี้: // Gets all the vertices for Rectangle 1 and stores them in an array -> arrRect1 // point 1 x: arrRect1[0], point 1 y: arrRect1[1] and so on... // Gets …

2
วิธีการใช้อัลกอริทึมการเรียงลำดับแบบคลาสสิกใน C ++ ที่ทันสมัย?
std::sortอัลกอริทึม (และญาติของตนstd::partial_sortและstd::nth_element) จาก ++ ห้องสมุด C มาตรฐานในการใช้งานมากที่สุดควบซับซ้อนและไฮบริดของขั้นตอนวิธีการเรียงลำดับประถมศึกษามากขึ้นเช่นการเลือกเรียงลำดับการจัดเรียงแทรกรวดเร็วเรียงลำดับผสานเรียงลำดับหรือการจัดเรียงกอง มีคำถามมากมายที่นี่และในเว็บไซต์น้องสาวเช่นhttps://codereview.stackexchange.com/ที่เกี่ยวข้องกับข้อบกพร่องความซับซ้อนและด้านอื่น ๆ ของการใช้งานของอัลกอริทึมการเรียงลำดับแบบคลาสสิกเหล่านี้ การนำไปใช้งานที่นำเสนอส่วนใหญ่ประกอบด้วยลูปดิบใช้การจัดการดัชนีและประเภทที่เป็นรูปธรรมและโดยทั่วไปจะไม่วิเคราะห์ในแง่ของความถูกต้องและมีประสิทธิภาพ คำถาม : อัลกอริทึมการเรียงลำดับแบบคลาสสิกที่กล่าวถึงข้างต้นสามารถนำไปใช้งานได้อย่างไรโดยใช้ C ++ สมัยใหม่ ไม่มีลูปแบบดิบแต่รวมการสร้างแบบอัลกอริทึมของ Standard Library เข้าด้วยกัน<algorithm> อินเทอร์เฟซตัววนซ้ำและการใช้เทมเพลตแทนการจัดการดัชนีและชนิดที่เป็นรูปธรรม สไตล์ C ++ 14รวมถึงไลบรารี่มาตรฐานเต็มรูปแบบรวมถึงตัวลดสัญญาณเสียงวากยสัมพันธ์เช่นautoนามแฝงเทมเพลตตัวเปรียบเทียบโปร่งใสและแลมบ์ดา polymorphic หมายเหตุ : สำหรับการอ้างอิงเพิ่มเติมเกี่ยวกับการใช้งานของอัลกอริทึมการเรียงลำดับดูWikipedia , รหัส Rosettaหรือhttp://www.sorting-algorithms.com/ ตามอนุสัญญาของฌอนพาเรนต์ (สไลด์ 39) ห่วงดิบเป็นวงที่forยาวกว่าองค์ประกอบของสองฟังก์ชันกับตัวดำเนินการ ดังนั้นf(g(x));หรือf(x); g(x);หรือf(x) + g(x);ไม่ได้ลูปดิบและไม่เป็นลูปในselection_sortและinsertion_sortด้านล่าง ฉันทำตามคำศัพท์ของ Scott Meyers เพื่อแสดง C ++ 1y ปัจจุบันเป็น C …


1
ค่า NaN ที่น้อยมากจะปรากฏในโครงข่ายประสาทเทียม
ฉันกำลังพยายามใช้สถาปัตยกรรมเครือข่ายประสาทเทียมใน Haskell และใช้กับ MNIST ฉันกำลังใช้hmatrixแพ็คเกจสำหรับพีชคณิตเชิงเส้น กรอบการฝึกอบรมของฉันสร้างขึ้นโดยใช้pipesแพ็คเกจ โค้ดของฉันคอมไพล์และไม่ผิดพลาด แต่ปัญหาคือการผสมขนาดเลเยอร์บางอย่าง (เช่น 1,000) ขนาดมินิแบทช์และอัตราการเรียนรู้ทำให้เกิดNaNค่าในการคำนวณ หลังจากการตรวจสอบบางครั้งฉันเห็นว่าในที่สุดค่าที่เล็กมาก (ลำดับของ1e-100) จะปรากฏในการเปิดใช้งาน แต่แม้ว่าจะไม่เกิดขึ้นการฝึกอบรมก็ยังไม่ได้ผล ไม่มีการปรับปรุงการสูญเสียหรือความแม่นยำ ฉันตรวจสอบและตรวจสอบรหัสของฉันอีกครั้งและฉันก็สูญเสียว่าต้นตอของปัญหาอาจเป็นอย่างไร นี่คือการฝึก backpropagation ซึ่งคำนวณเดลต้าสำหรับแต่ละเลเยอร์: backward lf n (out,tar) das = do let δout = tr (derivate lf (tar, out)) -- dE/dy deltas = scanr (\(l, a') δ -> let w = weights l in …

22
วิธีที่เร็วที่สุดในการรับค่าของπคืออะไร?
ฉันกำลังมองหาวิธีที่เร็วที่สุดที่จะได้รับคุณค่าของπซึ่งเป็นความท้าทายส่วนบุคคล โดยเฉพาะอย่างยิ่งฉันใช้วิธีการที่ไม่เกี่ยวข้องกับการใช้#defineค่าคงที่เช่นM_PIหรือเข้ารหัสตัวเลขอย่างหนัก โปรแกรมด้านล่างทดสอบวิธีต่างๆที่ฉันรู้ ในทางทฤษฎีแล้วแอสเซมบลีไลน์อินเวอร์ชั่นคือตัวเลือกที่เร็วที่สุดแม้ว่าจะไม่สามารถพกพาได้อย่างชัดเจน ฉันได้รวมมันเป็นพื้นฐานในการเปรียบเทียบกับรุ่นอื่น ในการทดสอบของฉันด้วยบิวด์อิน4 * atan(1)รุ่นนั้นเร็วที่สุดใน GCC 4.2 เพราะมันจะพับatan(1)ให้เป็นค่าคงที่โดยอัตโนมัติ หาก-fno-builtinระบุไว้atan2(0, -1)เวอร์ชันจะเร็วที่สุด นี่คือโปรแกรมทดสอบหลัก ( pitimes.c): #include <math.h> #include <stdio.h> #include <time.h> #define ITERS 10000000 #define TESTWITH(x) { \ diff = 0.0; \ time1 = clock(); \ for (i = 0; i < ITERS; ++i) \ diff += (x) - …

30
วิธีที่ดีที่สุดในการสร้างสตริงของรายการที่มีการคั่นใน Java คืออะไร?
ในขณะที่ทำงานในแอพพลิเคชั่น Java เมื่อเร็ว ๆ นี้ฉันจำเป็นต้องรวบรวมรายการค่าที่คั่นด้วยเครื่องหมายจุลภาคเพื่อส่งต่อไปยังบริการเว็บอื่นโดยไม่ทราบว่าจะมีองค์ประกอบกี่รายการล่วงหน้า สิ่งที่ดีที่สุดที่ฉันสามารถทำได้ด้วยการปิดส่วนหัวของฉันคือสิ่งนี้: public String appendWithDelimiter( String original, String addition, String delimiter ) { if ( original.equals( "" ) ) { return addition; } else { return original + delimiter + addition; } } String parameterString = ""; if ( condition ) parameterString = appendWithDelimiter( parameterString, "elementName", …
317 java  string  algorithm 


3
โครงสร้างข้อมูลพื้นฐานที่ใช้สำหรับ Redis คืออะไร
ฉันพยายามตอบคำถามสองข้อในรายการสรุป: โครงสร้างข้อมูลพื้นฐานที่ใช้สำหรับ Redis คืออะไร และข้อดีข้อเสีย / ข้อเสีย / การใช้งานหลักของแต่ละประเภทคืออะไร? ดังนั้นฉันได้อ่านรายการ Redis ถูกนำมาใช้จริงกับรายการที่เชื่อมโยง แต่สำหรับประเภทอื่น ๆ ฉันไม่สามารถขุดข้อมูลใด ๆ ได้ นอกจากนี้หากใครบางคนต้องสะดุดกับคำถามนี้และไม่มีข้อสรุประดับสูงของข้อดีข้อเสียของการปรับเปลี่ยนหรือการเข้าถึงโครงสร้างข้อมูลที่แตกต่างกันพวกเขาจะมีรายการที่สมบูรณ์ว่าควรใช้ประเภทใดประเภทหนึ่งเพื่ออ้างอิงได้ดีที่สุด โดยเฉพาะฉันกำลังมองหาร่างทุกประเภท: สตริง, รายการ, ชุด, zset และแฮ โอ้ฉันได้ดูที่บทความเหล่านี้และอื่น ๆ : http://redis.io/topics/data-types http://redis.io/topics/data-types-intro http://redis.io/topics/faq

30
คุณจะหมุนอาร์เรย์สองมิติได้อย่างไร
แรงบันดาลใจจากการโพสต์ของ Raymond Chenสมมติว่าคุณมีอาร์เรย์แบบสองมิติ 4x4 เขียนฟังก์ชั่นที่หมุนได้ 90 องศา เรย์มอนด์เชื่อมโยงไปยังโซลูชันในโค้ดหลอก แต่ฉันต้องการเห็นบางสิ่งในโลกแห่งความเป็นจริง [1][2][3][4] [5][6][7][8] [9][0][1][2] [3][4][5][6] กลายเป็น: [3][9][5][1] [4][0][6][2] [5][1][7][3] [6][2][8][4] ปรับปรุง : คำตอบของนิคตรงไปตรงมาที่สุด แต่มีวิธีการทำดีกว่า n ^ 2 หรือไม่? เกิดอะไรขึ้นถ้าเมทริกซ์มีขนาด 10,000x10000?

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