วิทยาศาสตร์คอมพิวเตอร์

ถาม - ตอบสำหรับนักเรียนนักวิจัยและผู้ปฏิบัติงานด้านวิทยาการคอมพิวเตอร์

2
Least-Constraining-Value คืออะไร
ในปัญหาความพึงพอใจของข้อ จำกัด ฮิวริสติกสามารถนำมาใช้เพื่อปรับปรุงประสิทธิภาพของตัวแก้ปัญหาแบบ bactracking ฮิวริสติกที่ได้รับโดยทั่วไปสามตัวสำหรับนักแก้ปัญหาการย้อนรอยอย่างง่ายคือ: ค่าต่ำสุดที่เหลืออยู่ (จำนวนค่ายังคงใช้ได้สำหรับตัวแปรนี้) ฮิวริสติกระดับ (จำนวนตัวแปรอื่น ๆ ที่ได้รับผลกระทบจากตัวแปรนี้) Least-constraining-value (ค่าใดจะทำให้ค่าอื่น ๆ ส่วนใหญ่สำหรับตัวแปรอื่น ๆ ) สองอันแรกค่อนข้างชัดเจนและใช้งานง่าย ก่อนอื่นให้เลือกตัวแปรที่มีค่าน้อยที่สุดในโดเมนและหากมีความสัมพันธ์ให้เลือกตัวแปรที่มีผลต่อตัวแปรอื่น ๆ ส่วนใหญ่ ด้วยวิธีนี้หากขั้นตอนหลักในตัวแก้ปัญหาเลือกการมอบหมายที่ไม่ดีคุณมีโอกาสพบได้เร็วขึ้นและประหยัดเวลาหากคุณเลือกตัวแปรที่มีค่าน้อยที่สุดที่เหลือซึ่งส่งผลต่อสิ่งอื่น ๆ ส่วนใหญ่ สิ่งเหล่านี้เรียบง่ายชัดเจนและใช้งานง่าย ค่าที่ จำกัด น้อยที่สุดไม่ได้กำหนดไว้อย่างชัดเจนทุกที่ที่ฉันมอง ปัญญาประดิษฐ์: วิธีการที่ทันสมัย (Russel & Norvig) เพิ่งพูดว่า: มันชอบค่าที่ออกกฎตัวเลือกน้อยที่สุดสำหรับตัวแปรใกล้เคียงในกราฟข้อ จำกัด การค้นหา "ค่า จำกัด อย่างน้อยที่สุด" ปรากฏเฉพาะการนำเสนอภาพนิ่งของมหาวิทยาลัยจำนวนมากตามหนังสือเล่มนี้เท่านั้นโดยไม่มีข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทำอัลกอริธึม ตัวอย่างเดียวที่ให้สำหรับฮิวริสติกนี้คือกรณีที่ตัวเลือกหนึ่งค่ากำจัดตัวเลือกทั้งหมดสำหรับตัวแปรข้างเคียงและตัวเลือกอื่นไม่ได้ ปัญหาของตัวอย่างนี้คือมันเป็นกรณีเล็กน้อยซึ่งจะถูกกำจัดทันทีเมื่อการตรวจสอบการมอบหมายที่อาจเกิดขึ้นนั้นสอดคล้องกับข้อ จำกัด ของปัญหา ดังนั้นในตัวอย่างทั้งหมดที่ฉันสามารถหาได้ฮิวริสติกที่มีข้อ จำกัด น้อยที่สุดไม่ได้มีประโยชน์ต่อประสิทธิภาพของตัวแก้ปัญหา แต่อย่างใดยกเว้นผลกระทบเล็กน้อยจากการเพิ่มการตรวจสอบซ้ำซ้อน สิ่งเดียวที่ฉันคิดได้ก็คือการทดสอบการกำหนดค่าที่เป็นไปได้ของตัวแปรข้างเคียงสำหรับการมอบหมายแต่ละครั้งและนับจำนวนการมอบหมายที่เป็นไปได้ของเพื่อนบ้านที่มีอยู่สำหรับการมอบหมายที่เป็นไปได้ของแต่ละตัวแปรจากนั้นเรียงลำดับค่าสำหรับตัวแปรนี้ …

5
ความถี่ของคำที่มีการสั่งซื้อในความซับซ้อน O (n)
ในระหว่างการสัมภาษณ์ตำแหน่งนักพัฒนา Java ฉันถูกถามต่อไปนี้: เขียนฟังก์ชั่นที่ใช้สองพารามิเตอร์: String แสดงเอกสารข้อความและ จำนวนเต็มซึ่งระบุจำนวนรายการที่จะส่งคืน ใช้ฟังก์ชั่นเพื่อส่งคืนรายการ Strings เรียงลำดับตามความถี่ของคำซึ่งเป็นคำที่เกิดขึ้นบ่อยที่สุดก่อน โซลูชันของคุณควรทำงานในเวลาโดยที่คือจำนวนอักขระในเอกสารO(n)O(n)O(n)nnn ต่อไปนี้เป็นสิ่งที่ฉันตอบ (ใน pseudocode) ไม่ใช่แต่ค่อนข้างเวลาเนื่องจากการเรียงลำดับ ฉันไม่สามารถคิดออกว่าจะทำมันเวลา O(n)O(n)O(n)O(nlogn)O(nเข้าสู่ระบบ⁡n)O(n \log n)O(n)O(n)O(n) wordFrequencyMap = new HashMap<String, Integer>(); words = inputString.split(' '); for (String word : words) { count = wordFrequencyMap.get(word); count = (count == null) ? 1 : ++count; wordFrequencyMap.put(word, count); } return …

5
ปัญหาการเขียนโปรแกรมเชิงเส้นของ Integer ทั้งหมดเป็นปัญหาหรือไม่
ดังที่ฉันเข้าใจปัญหาการมอบหมายอยู่ใน P เนื่องจากอัลกอริทึมของฮังการีสามารถแก้ไขได้ในเวลาพหุนาม - O (n 3 ) ฉันยังเข้าใจว่าปัญหาการกำหนดเป็นปัญหาการเขียนโปรแกรมเชิงเส้นจำนวนเต็มแต่หน้า Wikipedia ระบุว่านี่คือ NP-Hard สำหรับฉันแล้วนี่แสดงว่าปัญหาการมอบหมายอยู่ใน NP-Hard แต่แน่นอนปัญหาการมอบหมายไม่สามารถเป็นได้ทั้ง P และ NP-Hard มิฉะนั้น P จะเท่ากับ NP หรือไม่ หน้า Wikipedia หมายความว่าอัลกอริทึมทั่วไปสำหรับการแก้ปัญหา ILP ทั้งหมดนั้นคือ NP-Hard หรือไม่? แหล่งข้อมูลอื่นไม่กี่แห่งระบุว่า ILP คือ NP-Hard ดังนั้นนี่จึงทำให้ฉันเข้าใจความซับซ้อนของคลาสที่ซับซ้อนโดยทั่วไป

3
ภาษาที่ปราศจากบริบทคืออะไร
ฉันต้องรู้ว่า CFL ในคลาสใดปิดอยู่เช่นชุดใดที่เป็นส่วนเสริมของ CFL ฉันรู้ว่า CFL ไม่ได้ปิดภายใต้ส่วนประกอบและฉันรู้ว่า P ถูกปิดภายใต้ส่วนประกอบ เนื่องจาก CFL PI สามารถพูดได้ว่าส่วนประกอบของ CFL นั้นรวมอยู่ใน P (ใช่ไหม) ยังคงมีคำถามว่าส่วนเติมเต็มของ CFL เป็นส่วนย่อยที่เหมาะสมของ P หรือ P ทั้งหมดฉันขอขอบคุณแนวคิดใด ๆ เกี่ยวกับวิธีแสดงให้เห็นว่าการเติมเต็มของ CFL นั้นเป็น P ทั้งหมด (ถ้าเป็นกรณีนี้)⊊⊊\subsetneq

2
SK2 แคลคูลัสเป็นพื้นฐานที่สมบูรณ์หรือไม่ซึ่ง K2 เป็นตัวรวม K ที่พลิกกลับหรือไม่
โดยเฉพาะถ้าฉันกำหนดใหม่เป็น แทน จะแคลคูลัสเป็นพื้นฐานการแข่งขันหรือไม่?K2K2K_2K2= λ x ( λ y. Y)K2=λx.(λy.y)K_2 = \lambda x. (\lambda y. y)K= λ x ( λ y. x )K=λx.(λy.x)K = \lambda x. (\lambda y. x){ S, เค2, ผม}{S,K2,I}\{S, K_2,I\} ฉันเดาว่า "ไม่" เพียงเพราะฉันไม่สามารถสร้าง combinator K ปกติจาก , , และ combinators แต่ฉันไม่มีอัลกอริทึมที่จะติดตามหรือฉันมีสัญชาตญาณที่ดี เกี่ยวกับการทำสิ่งต่าง ๆ จากผู้รวมกลุ่มSSSผมIIK2K2K_2 ดูเหมือนว่าคุณสามารถกำหนด ด้วย -calculus แต่ฉันไม่สามารถทำงานย้อนกลับจากที่ได้รับในแง่ของและที่เหลือK2= …

2
หลักฐานที่ขัดแย้งกันสำหรับความไม่เท่าเทียมกันของ P และ NP?
ฉันพยายามยืนยันว่า N ไม่เท่ากับ NP โดยใช้ทฤษฎีลำดับชั้น นี่คือข้อโต้แย้งของฉัน แต่เมื่อฉันแสดงให้ครูของเราและหลังหักเขาบอกว่านี่เป็นปัญหาที่ฉันไม่สามารถหาเหตุผลที่น่าสนใจที่จะยอมรับ เราเริ่มต้นปิดโดยสมมติว่าP=NPP=NPP=NP P จากนั้นก็จะมีอัตราผลตอบแทนที่SAT∈PSAT∈P\mathit{SAT} \in Pที่ตัวเองแล้วตามที่SAT∈TIME(nk)SAT∈TIME(nk)\mathit{SAT} \in TIME(n^k) ) ขณะที่ยืนเรามีความสามารถที่จะทำลดทุกภาษาในNPNPNPเพื่อSATSAT\mathit{SAT} T ดังนั้นNP⊆TIME(nk)NP⊆TIME(nk)NP \subseteq TIME(n^k) ) ในทางตรงกันข้ามทฤษฎีบทลำดับชั้นเวลาระบุว่าควรมีภาษาA∈TIME(nk+1)A∈TIME(nk+1)A \in TIME(n^{k+1})ที่ไม่ได้อยู่ในTIME(nk)TIME(nk)TIME(n^k) ) นี่จะทำให้เราสรุปได้ว่าAAAอยู่ในPPPแต่ไม่ใช่NPNPNPซึ่งขัดแย้งกับสมมติฐานแรกของเรา ดังนั้นเรามาสรุปว่าP≠NPP≠NPP \neq NP P มีบางอย่างผิดปกติกับหลักฐานของฉัน?

2
คุณสามารถป้องกันคนที่อยู่ตรงกลางไม่ให้อ่านข้อความได้หรือไม่?
ฉันเคยได้ยินเกี่ยวกับการป้องกัน Man-In-The-Middle Attack ทั้งหมดเหล่านี้และฉันสงสัยว่ามันจะทำงานได้อย่างไรถ้าคนที่อยู่ตรงกลางฟังเฉพาะสตรีมของคุณและไม่ต้องการเปลี่ยนข้อความเอง คนที่อยู่ตรงกลางไม่เพียง แต่สามารถเปลี่ยนกุญแจโดยฝ่ายตรงข้ามเปลี่ยนกุญแจแล้วถอดรหัสและเข้ารหัสข้อความอีกครั้งได้หรือไม่? ใบรับรองจะป้องกันสิ่งนี้ได้อย่างไร แก้ไข: ฉันได้ยินมาว่าหน่วยงานออกใบรับรองโดยทั่วไปกล่าวว่า: "ใช่นั่นคือกุญแจอีกดอก" แต่ฉันจะมั่นใจได้อย่างไรว่าลายเซ็นของใบรับรองไม่ได้ถูกทำให้ยุ่งเหยิง?

2
ภาษาที่เกี่ยวข้องกับจำนวนอตรรกยะไม่ใช่ CFL
ฉันทำงานหนักในตำราเรียนและฉันก็ไม่สามารถหาวิธีดำเนินการได้ นี่คือปัญหา สมมติว่าเรามีภาษาL = { a ฉันb j : ฉัน≤ j γ , ฉัน≥ 0 , j ≥ 1 }L={aibj:i≤jγ,i≥0,j≥1}L = \{a^ib^j: i \leq j \gamma, i\geq 0, j\geq 1\}โดยที่γγ\gammaเป็นจำนวนอตรรกยะ ฉันจะพิสูจน์ได้อย่างไรว่าLLLไม่ใช่ภาษาที่ไม่มีบริบท ในกรณีที่ationalγ\gammaมีเหตุผลมันค่อนข้างง่ายที่จะสร้างไวยากรณ์ที่ยอมรับภาษา แต่เนื่องจากγγ\gammaไม่มีเหตุผลฉันจึงไม่รู้จะทำยังไง ดูเหมือนว่าบทแทรกใด ๆ จะทำงานที่นี่ บางทีทฤษฎีบทของ Parikh อาจจะทำงานที่นี่เนื่องจากดูเหมือนว่าสัญชาตญาณดูเหมือนว่าภาษานี้จะไม่มีภาพ Parikh semilinear ประกอบ แบบฝึกหัดนี้มาจาก "หลักสูตรที่สองในภาษาทางการและทฤษฎีออโตมาตา" โดย Jeffrey Shallit แบบฝึกหัด 25 บทที่ …

2
จุดบรรจบของการขยายเบต้า
Let →β→β\to_\betaพ.ศ. ββ\beta -reduction ในλλ\lambdaแคลคูลัส กำหนดββ\beta -expansion ←β←β\leftarrow_\betaโดยt′←βt⟺t→βt′t′←βt⟺t→βt′t'\leftarrow_\beta t \iff t\to_\beta t' ' คือ←β←β\leftarrow_\betaไหลมารวมกัน? ในคำอื่น ๆ ที่เราจะมีที่ใดl,d,rl,d,rl,d,rถ้าl→∗βd←∗βrl→β∗d←β∗rl \to_\beta^* d\leftarrow_\beta^* rแล้วมีอยู่uuuดังกล่าวที่l←∗βu→∗βrl←β∗u→β∗rl\leftarrow_\beta^* u \to_\beta^* r ? คำสำคัญ: การบรรจบขึ้น, คว่ำทรัพย์สิน CR ฉันเริ่มต้นด้วยการดูที่คุณสมบัติที่อ่อนแอกว่า: การบรรจบกันของท้องถิ่น (เช่นถ้าl→βd←βrl→βd←βrl \to_\beta d\leftarrow_\beta r , ดังนั้นl←∗βu→∗βrl←β∗u→β∗rl\leftarrow_\beta^* u \to_\beta^* r ) แม้ว่านี้เป็นความจริงก็จะได้หมายความถึงการบรรจบกันตั้งแต่ββ\beta -expansion ไม่ยุติ แต่ฉันคิดว่ามันจะช่วยให้ฉันเข้าใจอุปสรรค (บนสุด)ในกรณีที่ทั้งสองลดลงอยู่ที่ระดับบนสมมติฐานที่จะกลายเป็น(λx1.b1)a1→b1[a1/x1]=b2[a2/x2]←(λx2.b2)a2(λx1.b1)a1→b1[a1/x1]=b2[a2/x2]←(λx2.b2)a2(\lambda x_1.b_1)a_1\rightarrow b_1[a_1/x_1]=b_2[a_2/x_2]\leftarrow (\lambda x_2.b_2)a_2 2 …

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

2
วิธีการรับตัวกำจัดที่พิมพ์ได้อย่างพึ่งพา?
ในการโปรแกรมแบบพิมพ์อย่างพึ่งพามีสองวิธีหลักในการย่อยสลายข้อมูลและดำเนินการเรียกซ้ำ: การจับคู่รูปแบบขึ้นอยู่กับ : คำจำกัดความของฟังก์ชั่นจะได้รับเป็นคำสั่งหลาย ๆ การรวมทำให้แน่ใจว่าทุกกรณีที่ถูกละเว้นนั้นเป็นไปไม่ได้และตัวแก้ไขภายนอกช่วยให้มั่นใจว่าการเรียกซ้ำนั้นได้รับการพิสูจน์แล้ว กำจัด : ประเภทข้อมูลอุปนัยแต่ละมีค่าคงที่เกี่ยวข้องE Dซึ่งทำหน้าที่เป็นหลักการเหนี่ยวนำและเป็นฟังก์ชันเวียนที่สลายตัวค่าประเภทD สิ่งเหล่านี้มีความละเอียดมากกว่า แต่มีความได้เปรียบในการรวม (ทุกกรณีถูกปกคลุมด้วยE D ) และยกเลิกโดยการก่อสร้างDDDEDEDE_DDDDEDEDE_D ผมเคยเห็นกำจัดสำหรับประเภทข้อมูลทั่วไปเช่นที่กำจัดเป็นพื้นอุปนัยทางคณิตศาสตร์หรือL ฉันs Tที่กำจัดเป็นพื้นพับยังไม่มีข้อความทียังไม่มีข้อความaเสื้อNatL ฉันs TLผมsเสื้อList ฉันได้อ่านเอกสารหลายฉบับเกี่ยวกับการจับคู่รูปแบบขึ้นอยู่กับและหลายคนอ้างถึงทฤษฎีประเภทที่สามารถกำหนดประเภทข้อมูลและทฤษฎีกำจัด ยกตัวอย่างเช่นการขจัดรูปแบบการจับคู่ขึ้นอยู่กับอธิบายวิธี UTT จะขึ้นอยู่กับเครื่องกำจัดและวิธีการจับคู่รูปแบบสามารถแปลงไปกำจัดในการปรากฏตัวของความจริงKความเข้าใจของฉันคือว่าเมื่อมีการกำหนดประเภทข้อมูลทฤษฎีให้ตัวกำจัดKKK สิ่งที่ฉันไม่พบ (หรืออย่างน้อยไม่รู้จักถ้าฉันเห็นมัน) เป็นคำอธิบายที่ดีว่าใครจะได้รับผู้กำจัดทั้งประเภทและความหมายของพวกเขา ใครบางคนสามารถชี้ให้ฉันอ้างอิงถึงวิธีการที่จะได้รับตัวกำจัดจากคำจำกัดความของประเภทข้อมูลหรือไม่?

2
มีมาตรฐานใดสำหรับการเปรียบเทียบรันไทม์ที่ทดลอง
สถานการณ์ของฉัน ฉันกำลังเขียนบทความที่นำเสนอโมดูลซอฟต์แวร์ที่ฉันพัฒนาและฉันต้องการเปรียบเทียบรันไทม์ของมันกับโมดูลอื่นสำหรับงานเดียวกัน ฉันตระหนักถึงข้อเสียของการทดสอบรันไทม์แต่โปรดสมมติว่าไม่มีทางแก้ไขในกรณีของฉัน (ฉันสามารถและอนุมานคุณสมบัติบางอย่างในทางทฤษฎี แต่มันก็ไม่พอเพียงสำหรับทุกสิ่ง) สถานการณ์ที่เฉพาะเจาะจงฉันต้องการที่จะใช้สำหรับการเปรียบเทียบมีสองพารามิเตอร์: ความซับซ้อน ของปัญหาและเมล็ดสุ่ม ซึ่งกำหนดปัญหารายละเอียด ส่วนใหญ่ผมต้องการที่จะแสดงให้เห็นการพึ่งพา nโดยการตรวจสอบเบื้องต้นและทฤษฎีอิทธิพลของต่อรันไทม์มีน้อยหรือไม่สำคัญ งานเดียวใช้เวลาดำเนินการไม่เกินสิบนาทีnnnRRrnnnRRr คำถามจริง ฉันกำลังมองหาขั้นตอนที่เป็นที่ยอมรับหรือเผยแพร่โดยทั่วไปเกี่ยวกับการดำเนินการทดลองดังกล่าวหรืออย่างน้อยรายการของข้อผิดพลาดทั่วไป สิ่งที่ฉันพบจนถึง ไม่มีอะไร การค้นหาทางอินเทอร์เน็ตทำให้เกิดผลลัพธ์ที่ไม่เกี่ยวข้องทั้งหมด แต่ฉันอาจไม่ได้ใช้คำศัพท์ที่ถูกต้อง การรวมคำหลักขั้นต่ำซึ่งฉันรู้ว่าเป็นมาตรฐานที่ดี (ดูด้านล่าง) ก็ไม่ได้ช่วยอะไรเช่นกัน ฉันจะทำอย่างไร ดำเนินการทดลองทั้งหมดในเครื่องเดียวกันด้วยซอฟต์แวร์ที่อาจรบกวนเช่น GUI ถูกปิดใช้งานเท่าที่จะทำได้ ขึ้นอยู่กับโมดูลทั้งหมดในการเลือกสถานการณ์เดียวกันคือและ เดียวกันnnnRRr สำหรับแต่ละสถานการณ์ทดสอบโมดูลต่าง ๆ โดยตรงหลังจากกันตามลำดับแบบสุ่ม ด้วยคำอื่น ๆ การวนรอบโมดูลที่ต่างกันนั้นเป็นส่วนที่อยู่ด้านในสุด สิ่งนี้ควรหลีกเลี่ยงอคติกับโมดูลที่แตกต่างกันเนื่องจากความผันผวนของประสิทธิภาพของเครื่องช้า (เช่นเนื่องจากการเปลี่ยนแปลงของอุณหภูมิ) ลำดับแบบสุ่มควรหลีกเลี่ยงอคติผ่านเอฟเฟกต์เช่นการแคชหรือหนึ่งโมดูลที่ถูกทดสอบเสมอหลังจากที่เดียวกัน สำหรับแต่ละให้ใช้เวลารันไทม์ขั้นต่ำในหลาย ๆ สถานการณ์ด้วยเมล็ดที่แตกต่างกันเป็นเกณฑ์มาตรฐาน สิ่งนี้ควรหลีกเลี่ยงอคติกับโมดูลที่แตกต่างกันเนื่องจากความผันผวนของประสิทธิภาพการทำงานของเครื่องในระยะเวลาอันสั้นnnn

1
การเขียนโปรแกรมทางพันธุกรรมที่เกี่ยวข้องในวันนี้?
ความกังวลหลักของฉันคือการเขียนโปรแกรมทางพันธุกรรมเป็นสาขาการวิจัยที่มีการใช้งานจริงหรือไม่ ดูเหมือนว่าในด้านการเรียนรู้ของเครื่องเครือข่ายประสาทเทียมเป็นคำศัพท์หลักที่มีการกล่าวถึงในข่าวกระแสหลักในวันนี้ แต่ฉันไม่เคยได้ยินเกี่ยวกับการเขียนโปรแกรมทางพันธุกรรมที่คล้ายกัน "เรื่องราวความสำเร็จ"

2
ชื่อของปัญหาการเรียงลำดับใหม่ / การเรียงลำดับ?
คุณจะได้รับอาร์เรย์ของความยาวnแต่ละองค์ประกอบของอาเรย์เป็นของหนึ่งในคลาสคุณควรจะจัดเรียงอาร์เรย์ใหม่โดยใช้จำนวนการสลับขั้นต่ำเพื่อให้องค์ประกอบทั้งหมดจากคลาสเดียวกันถูกจัดกลุ่มเข้าด้วยกันเสมอ ตัวอย่างเช่น: ยังมีข้อตกลงที่ใช้ได้อีกสามข้อที่เหลืออยู่nnnKKK[2,1,3,3,2,2]⟶[2,2,2,1,3,3], or[2,1,3,3,2,2]⟶[1,2,2,2,3,3], or[2,1,3,3,2,2]⟶[3,3,2,2,2,1].[2,1,3,3,2,2]⟶[2,2,2,1,3,3], or[2,1,3,3,2,2]⟶[1,2,2,2,3,3], or[2,1,3,3,2,2]⟶[3,3,2,2,2,1]. \begin{align*} &[2, 1, 3, 3, 2, 2] \longrightarrow [2, 2, 2, 1, 3, 3], \text{ or} \\ &[2, 1, 3, 3, 2, 2] \longrightarrow [1, 2, 2, 2, 3, 3], \text{ or} \\ &[2, 1, 3, 3, 2, 2] \longrightarrow [3, 3, 2, …

3
"แผนที่" หมายถึงอะไร
ฉันพบคำศัพท์หลายครั้งในสื่อการเรียนรู้ CS ต่าง ๆ : L2 CS162 (UC Berkeley): I / O ที่แมปหน่วยความจำ L4 CS162 (UC Berkeley): ไฟล์ที่แม็พหน่วยความจำ L24 CS61 (UC Berkeley): “ หน่วยความจำแมป I / O”: การควบคุมอุปกรณ์ / ข้อมูลลงทะเบียนแมปกับพื้นที่ที่อยู่ของ CPU แม้หลังจาก googling "map" ฉันก็ได้รับบทความ Map_ (สูงกว่า order_function)แต่มันก็ไม่ชัดเจนสำหรับฉัน ยิ่งกว่านั้นพยายามเข้าใจความหมายในบริบทของbitmapการอ่านบทความ Wikipedia : อาเรย์บิตคือการแมปจากบางโดเมน (เกือบตลอดช่วงของจำนวนเต็ม) ไปยังค่าในชุด {0, 1} ฉันไม่แน่ใจ แต่ในบริบทข้างต้นมันฟังดูเกี่ยวกับการแปลงข้อมูล หลังจากอ่านหนังสือ CS …

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