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

การเรียงสับเปลี่ยนคือการจัดเรียงวัตถุให้เป็นลำดับเฉพาะ

30
วิธีสร้างพีชคณิตทั้งหมดของรายการ?
คุณจะสร้างพีชคณิตทั้งหมดของรายการใน Python โดยไม่ขึ้นกับประเภทขององค์ประกอบในรายการได้อย่างไร ตัวอย่างเช่น: permutations([]) [] permutations([1]) [1] permutations([1, 2]) [1, 2] [2, 1] permutations([1, 2, 3]) [1, 2, 3] [1, 3, 2] [2, 1, 3] [2, 3, 1] [3, 1, 2] [3, 2, 1]

9
สลับแถว DataFrame
ฉันมี DataFrame ต่อไปนี้: Col1 Col2 Col3 Type 0 1 2 3 1 1 4 5 6 1 ... 20 7 8 9 2 21 10 11 12 2 ... 45 13 14 15 3 46 16 17 18 3 ... DataFrame อ่านจากไฟล์ csv แถวทั้งหมดที่มีType1 อยู่ด้านบนตามด้วยแถวที่มีType2 ตามด้วยแถวที่มีType3 เป็นต้น ฉันต้องการสลับลำดับแถวของ DataFrame เพื่อให้ทุกอย่างTypeผสมกัน …

8
java.util.Random เป็นแบบสุ่มจริงๆเหรอ? ฉันจะสร้าง 52 ได้อย่างไร! (แฟกทอเรียล) ลำดับที่เป็นไปได้?
ฉันใช้Random (java.util.Random)เพื่อสับไพ่ 52 ใบ มี 52! (8.0658175e + 67) ความเป็นไปได้ แต่ฉันได้พบว่าเมล็ดพันธุ์แห่งjava.util.Randomนี้คือ a longซึ่งเล็กกว่ามากที่ 2 ^ 64 (1.8446744e + 19) จากที่นี่ฉันสงสัยว่าjava.util.Random มันสุ่มจริงๆหรือเปล่า จริง ๆ แล้วมันสามารถสร้างทั้ง 52! ความเป็นไปได้? ถ้าไม่ฉันจะสร้างซีเควนซ์สุ่มที่ดีกว่าที่สามารถผลิตทั้ง 52 อย่างน่าเชื่อถือ ความเป็นไปได้?

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

30
พีชคณิตใน JavaScript?
ฉันพยายามเขียนฟังก์ชันที่ทำสิ่งต่อไปนี้: รับอาร์เรย์จำนวนเต็มเป็นอาร์กิวเมนต์ (เช่น [1,2,3,4]) สร้างอาร์เรย์ของการเรียงสับเปลี่ยนที่เป็นไปได้ทั้งหมด [1,2,3,4] โดยการเรียงสับเปลี่ยนแต่ละอันมีความยาว 4 ฟังก์ชั่นด้านล่าง (ฉันพบว่ามันออนไลน์) ทำสิ่งนี้โดยการใช้สตริงเป็นอาร์กิวเมนต์และคืนค่าพีชคณิตทั้งหมดของสตริงนั้น ฉันไม่สามารถหาวิธีการแก้ไขเพื่อให้สามารถทำงานกับอาร์เรย์ของจำนวนเต็มได้ (ฉันคิดว่านี่มีบางอย่างที่เกี่ยวข้องกับวิธีการบางอย่างของวิธีการทำงานของสตริงแตกต่างจากที่พวกเขาทำกับจำนวนเต็ม แต่ฉันไม่แน่ใจ .. ) var permArr = [], usedChars = []; function permute(input) { var i, ch, chars = input.split(""); for (i = 0; i < chars.length; i++) { ch = chars.splice(i, 1); usedChars.push(ch); if (chars.length == 0) …

30
อัลกอริทึมเพื่อสร้างการเรียงสับเปลี่ยนที่เป็นไปได้ทั้งหมดของรายการ?
สมมติว่าฉันมีรายการขององค์ประกอบ n ฉันรู้ว่ามี n! วิธีที่เป็นไปได้ในการจัดลำดับองค์ประกอบเหล่านี้ อัลกอริทึมในการสร้างลำดับที่เป็นไปได้ทั้งหมดของรายการนี้คืออะไร? ตัวอย่างเช่นฉันมีรายการ [a, b, c] อัลกอริทึมจะส่งคืน [[a, b, c], [a, c, b,], [b, a, c], [b, c, a], [c, a, b], [c, b , ก]]. ฉันกำลังอ่านที่นี่ http://en.wikipedia.org/wiki/Permutation#Algorithms_to_generate_permutations แต่วิกิพีเดียไม่เคยอธิบายได้ดี ฉันไม่เข้าใจมันมากนัก

12
การเปลี่ยนแปลงอย่างรวดเร็ว -> จำนวน -> อัลกอริทึมการจับคู่การเปลี่ยนแปลง
ฉันมี n องค์ประกอบ ยกตัวอย่างเช่น 7 องค์ประกอบ 1234567 ฉันรู้ว่ามี 7! = 5040 การเรียงสับเปลี่ยนที่เป็นไปได้ของ 7 องค์ประกอบเหล่านี้ ฉันต้องการอัลกอริทึมที่รวดเร็วซึ่งประกอบด้วยสองฟังก์ชัน: f (ตัวเลข) จับคู่ตัวเลขระหว่าง 0 ถึง 5039 กับการเรียงสับเปลี่ยนที่ไม่ซ้ำกันและ f '(การเรียงสับเปลี่ยน) แมปการเปลี่ยนแปลงกลับไปยังหมายเลขที่สร้างขึ้น ฉันไม่สนใจเกี่ยวกับความสอดคล้องระหว่างตัวเลขและการเรียงสับเปลี่ยนการให้การเรียงสับเปลี่ยนแต่ละครั้งมีหมายเลขเฉพาะของตัวเอง ตัวอย่างเช่นฉันอาจมีฟังก์ชันที่ f(0) = '1234567' f'('1234567') = 0 อัลกอริทึมที่เร็วที่สุดที่นึกถึงคือการแจกแจงการเรียงสับเปลี่ยนทั้งหมดและสร้างตารางการค้นหาในทั้งสองทิศทางดังนั้นเมื่อสร้างตารางแล้ว f (0) จะเป็น O (1) และ f ('1234567') จะเป็น a ค้นหาสตริง อย่างไรก็ตามนี่คือความจำหิวโดยเฉพาะอย่างยิ่งเมื่อ n มีขนาดใหญ่ ใครสามารถเสนออัลกอริทึมอื่นที่จะทำงานได้อย่างรวดเร็วและไม่มีข้อเสียของหน่วยความจำ?

5
std :: next_permutation คำอธิบายการนำไปใช้งาน
ฉันอยากรู้ว่าstd:next_permutationมีการใช้งานอย่างไรดังนั้นฉันจึงแยกgnu libstdc++ 4.7เวอร์ชันและทำความสะอาดตัวระบุและการจัดรูปแบบเพื่อสร้างการสาธิตต่อไปนี้ ... #include <vector> #include <iostream> #include <algorithm> using namespace std; template<typename It> bool next_permutation(It begin, It end) { if (begin == end) return false; It i = begin; ++i; if (i == end) return false; i = end; --i; while (true) { It j = i; --i; …

8
วิธีการสุ่ม (หรืออนุญาต) dataframe rowwise และ columnwise?
ฉันมี dataframe (df1) แบบนี้ f1 f2 f3 f4 f5 d1 1 0 1 1 1 d2 1 0 0 1 0 d3 0 0 0 1 1 d4 0 1 0 0 1 คอลัมน์ d1 ... d4 คือ rowname แถว f1 ... f5 คือชื่อคอลัมน์ ในการทำตัวอย่าง (df1) ฉันได้รับดาต้าเฟรมใหม่ที่มีจำนวน 1 เท่ากับ df1 …
101 r  random  permutation 

25
การค้นหาการเรียงสับเปลี่ยนที่เป็นไปได้ทั้งหมดของสตริงที่กำหนดใน python
ฉันมีสตริง ฉันต้องการสร้างการเรียงสับเปลี่ยนทั้งหมดจากสตริงนั้นโดยเปลี่ยนลำดับของอักขระในนั้น ตัวอย่างเช่นพูดว่า: x='stack' สิ่งที่ฉันต้องการคือรายการแบบนี้ l=['stack','satck','sackt'.......] ตอนนี้ฉันกำลังทำซ้ำในรายการของสตริงโดยเลือกตัวอักษร 2 ตัวแบบสุ่มและเปลี่ยนตำแหน่งเพื่อสร้างสตริงใหม่และเพิ่มเพื่อตั้งค่าการแสดง l ตามความยาวของสตริงฉันกำลังคำนวณจำนวนการเรียงสับเปลี่ยนที่เป็นไปได้และทำซ้ำต่อไปจนกว่าขนาดที่ตั้งไว้จะถึงขีด จำกัด ต้องมีวิธีที่ดีกว่านี้

5
วิธีสร้างการเปลี่ยนแปลงใน c ++ โดยใช้ STL สำหรับจำนวนที่ต่ำกว่าความยาวทั้งหมด
ฉันมีc++ vectorกับstd::pair<unsigned long, unsigned long>วัตถุ std::next_permutation()ฉันพยายามที่จะสร้างวัตถุพีชคณิตของเวกเตอร์โดยใช้ อย่างไรก็ตามฉันต้องการให้การเรียงสับเปลี่ยนมีขนาดตามที่คุณต้องการคล้ายกับpermutationsฟังก์ชันในไพ ธ อนซึ่งมีการระบุขนาดของการเปลี่ยนรูปแบบการส่งคืนที่คาดไว้ โดยทั่วไปc++เทียบเท่ากับ import itertools list = [1,2,3,4,5,6,7] for permutation in itertools.permutations(list, 3): print(permutation) Python Demo (1, 2, 3) (1, 2, 4) (1, 2, 5) (1, 2, 6) (1, 2, 7) (1, 3, 2) (1, 3, 4) .. (7, 5, 4) (7, 5, …

4
ใช้ R เพื่อแก้ปัญหาเกม Lucky 26
ฉันพยายามแสดงให้ลูกชายเห็นว่าการเขียนโค้ดสามารถใช้ในการแก้ปัญหาที่เกิดจากเกมได้อย่างไรรวมถึงการเห็นว่า R จัดการกับข้อมูลขนาดใหญ่ได้อย่างไร เกมดังกล่าวมีชื่อว่า "Lucky 26" ในเกมนี้หมายเลข (1-12 โดยไม่มีการซ้ำซ้อน) ถูกวางตำแหน่งที่ 12 คะแนนบนดาวของดาวิด (6 จุดยอด, 6 ทางแยก) และ 6 บรรทัดของ 4 หมายเลขทั้งหมดต้องเพิ่มเป็น 26 จากความเป็นไปได้ประมาณ 479 ล้าน (12P12 ) เห็นได้ชัดว่ามี 144 โซลูชั่น ฉันพยายามที่จะรหัสนี้ใน R ดังนี้ แต่หน่วยความจำเป็นปัญหาดูเหมือนว่า ฉันขอขอบคุณคำแนะนำใด ๆ ที่จะตอบคำถามหากสมาชิกมีเวลา ขอบคุณสมาชิกล่วงหน้า library(gtools) x=c() elements <- 12 for (i in 1:elements) { x[i]<-i } …
15 r  bigdata  permutation 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.