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

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

6
เราจะสันนิษฐานได้ว่าการดำเนินการขั้นพื้นฐานกับตัวเลขต้องใช้เวลาคงที่
ตามปกติในขั้นตอนวิธีการที่เราไม่สนใจเกี่ยวกับการเปรียบเทียบนอกจากนี้หรือลบของตัวเลข - เราถือว่าพวกเขาทำงานในเวลา ) ตัวอย่างเช่นเราสมมติว่าสิ่งนี้เมื่อเราบอกว่าการเรียงลำดับแบบอิงการเปรียบเทียบคือO ( n log n )แต่เมื่อตัวเลขมีขนาดใหญ่เกินไปที่จะพอดีกับการลงทะเบียนเรามักจะแสดงมันเป็นอาร์เรย์ดังนั้นการดำเนินการพื้นฐานจำเป็นต้องมีการคำนวณเพิ่มเติมO ( 1 )O(1)O(1)O ( n บันทึกn )O(nlog⁡n)O(n\log n) มีหลักฐานแสดงหรือไม่ว่าการเปรียบเทียบตัวเลขสองตัว (หรือฟังก์ชันทางคณิตศาสตร์แบบดั้งเดิมอื่น ๆ ) สามารถทำได้ใน ? ถ้าไม่ใช่ทำไมเราถึงบอกว่าการเรียงลำดับโดยการเปรียบเทียบนั้นเป็นO ( n log n ) ?O ( 1 )O(1)O(1)O ( n บันทึกn )O(nlog⁡n)O(n\log n) ฉันพบปัญหานี้เมื่อฉันตอบคำถามมากและฉันรู้ว่าอัลกอริทึมของฉันไม่ได้เพราะไม่ช้าก็เร็วผมควรจะจัดการกับใหญ่ int ยังมันไม่ได้หลอกพหุนามอัลกอริทึมเวลามันเป็นPO ( n )O(n)O(n)PPP

9
ทำไมการเพิ่มความเร็วอย่างรวดเร็วเท่ากับการทำงานที่ชาญฉลาดในโปรเซสเซอร์รุ่นใหม่?
ฉันรู้ว่าการทำงานของ bit-wise นั้นรวดเร็วสำหรับตัวประมวลผลที่ทันสมัยเนื่องจากสามารถทำงานกับ 32 หรือ 64 บิตในแบบขนานดังนั้นการดำเนินงาน bit-wise จึงใช้เวลาเพียงหนึ่งรอบนาฬิกา อย่างไรก็ตามการเพิ่มเป็นการดำเนินการที่ซับซ้อนซึ่งประกอบด้วยการดำเนินการอย่างน้อยหนึ่งอย่างและอาจเป็นถึงการดำเนินการที่ชาญฉลาดจำนวนโหลดังนั้นฉันจึงคิดว่ามันจะช้าลง 3-4 เท่า ฉันรู้สึกประหลาดใจที่ได้เห็นมาตรฐานที่เรียบง่ายว่าการเพิ่มนั้นเร็วพอ ๆ กับการดำเนินการที่ชาญฉลาด (XOR, OR และอื่น ๆ ) ทุกคนสามารถหลั่งน้ำตาแสงนี้

9
คุณสมบัติของภาษาการเขียนโปรแกรมที่ทำให้การรวบรวมเป็นไปไม่ได้?
คำถาม: "คุณสมบัติบางอย่างของภาษาการเขียนโปรแกรมอาจต้องการวิธีเดียวที่จะทำให้โค้ดที่ถูกเขียนนั้นถูกเรียกใช้งานโดยการตีความกล่าวอีกนัยหนึ่งไม่สามารถคอมไพล์ไปยังรหัสเครื่องดั้งเดิมของ CPU แบบดั้งเดิมได้คุณสมบัติเหล่านี้คืออะไร" ผู้เรียบเรียง: หลักการและการปฏิบัติโดย Parag H. Dave และ Himanshu B. Dave หนังสือเล่มนี้ไม่มีเงื่อนงำเกี่ยวกับคำตอบ ฉันพยายามค้นหาคำตอบเกี่ยวกับแนวคิดการเขียนโปรแกรมภาษา (SEBESTA) แต่ก็ไม่มีประโยชน์ การค้นหาเว็บก็มีประโยชน์เล็กน้อยเช่นกัน คุณมีเงื่อนงำอะไรบ้าง

4
(เมื่อใด) คือการค้นหาตารางแฮช O (1)?
มักจะกล่าวว่าการค้นหาตารางแฮชทำงานในเวลาคงที่: คุณคำนวณค่าแฮชซึ่งให้ดัชนีสำหรับการค้นหาอาร์เรย์ แต่สิ่งนี้ไม่สนใจการชน ในกรณีที่เลวร้ายที่สุดทุกรายการเกิดขึ้นในถังเดียวกันและเวลาค้นหากลายเป็นเชิงเส้น ( )Θ(n)Θ(n)\Theta(n) มีเงื่อนไขเกี่ยวกับข้อมูลที่สามารถทำการค้นหาตารางแฮชอย่างแท้จริงหรือไม่ เป็นค่าเฉลี่ยเท่านั้นหรือตารางแฮชมีค้นหาตัวพิมพ์ที่เลวร้ายที่สุด?O ( 1 )O(1)O(1)O(1)O(1)O(1)O(1) หมายเหตุ: ฉันมาจากมุมมองของโปรแกรมเมอร์ที่นี่ เมื่อฉันเก็บข้อมูลในตารางแฮชมันมักจะเป็นสตริงหรือโครงสร้างข้อมูลคอมโพสิตบางส่วนและข้อมูลจะเปลี่ยนแปลงในช่วงอายุของตารางแฮช ดังนั้นในขณะที่ฉันชื่นชมคำตอบเกี่ยวกับแฮ็กที่สมบูรณ์แบบพวกเขาน่ารัก แต่เป็นข้อมูลเล็ก ๆ น้อย ๆ และไม่สามารถใช้งานได้จริงจากมุมมองของฉัน การติดตามผล PS: ข้อมูลประเภทใดที่มีการดำเนินการตารางแฮช O (1)

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

4
ความแปลกใหม่ใน MapReduce คืออะไร?
ไม่กี่ปีที่ผ่านมาMapReduceได้รับการยกย่องว่าเป็นการปฏิวัติการเขียนโปรแกรมแบบกระจาย นอกจากนี้ยังมีนักวิจารณ์แต่โดยมากแล้วก็มีโฆษณาที่กระตือรือร้น มันยังจดสิทธิบัตร! [1] ชื่อนี้เป็นที่ระลึกถึงmapและreduceในการเขียนโปรแกรมการทำงาน แต่เมื่อฉันอ่าน (Wikipedia) ขั้นตอนแผนที่:โหนดหลักจะรับอินพุตแบ่งเป็นปัญหาย่อยที่เล็กกว่าและกระจายไปยังโหนดผู้ปฏิบัติงาน โหนดผู้ปฏิบัติงานอาจทำสิ่งนี้อีกครั้งในทางกลับนำไปสู่โครงสร้างต้นไม้หลายระดับ โหนดผู้ปฏิบัติงานประมวลผลปัญหาที่เล็กกว่าและส่งคำตอบกลับไปที่โหนดหลัก ลดขั้นตอน:โหนดหลักจะรวบรวมคำตอบสำหรับปัญหาย่อยทั้งหมดและรวมเข้าด้วยกันในรูปแบบเอาต์พุตบางส่วน - คำตอบสำหรับปัญหาที่พยายามแก้ไขในขั้นต้น หรือ [2] Internals of MAP: [... ] MAP แยกค่าอินพุตเป็นคำ [... ] MAP หมายถึงการเชื่อมโยงคู่คีย์ / ค่าที่กำหนดของอินพุตกับคู่กลางคีย์ / ค่าที่อาจเกิดขึ้น Internals of REDUCE: [... ] [REDUCE] ดำเนินการรวมที่จำเป็น (พูดลด): รับค่าจำนวนมากและลดลงเป็นค่าเดียว ฉันไม่สามารถช่วย แต่คิดว่า: นี่คือการแบ่ง & พิชิต (ในแง่ของการควบรวมกิจการ) ธรรมดาและเรียบง่าย! ดังนั้นมีความแปลกใหม่ (แนวคิด) ใน MapReduce …

6
ทำไมเครื่องทัวริงจึงเป็นรูปแบบการคำนวณยอดนิยม?
ฉันเป็นนักศึกษาระดับปริญญาตรี ฉันเข้าใจว่าทัวริงมากับเครื่องนามธรรมของเขา (จำลองคนที่คำนวณ) แต่ดูเหมือนว่าฉันจะเป็นนามธรรมที่น่าอึดอัดใจและไม่เหมาะสม เหตุใดเราจึงพิจารณา "เทป" และสัญลักษณ์การเขียนหัวของเครื่องจักรการเปลี่ยนสถานะขยับเทปไปมา? ความสำคัญพื้นฐานคืออะไร? DFA นั้นสง่างาม - ดูเหมือนว่าจะเข้าใจสิ่งที่จำเป็นต่อการจดจำภาษาปกติได้อย่างแม่นยำ แต่เครื่องจักรทัวริงตามการตัดสินใจของฉันเป็นเพียงการคุมกำเนิดแบบนามธรรม หลังจากคิดเกี่ยวกับเรื่องนี้แล้วฉันคิดว่ารูปแบบการคำนวณในอุดมคติที่สุดคือการพูดว่าระบบทางกายภาพบางอย่างที่สอดคล้องกับสายป้อนข้อมูลหลังจากถูกกำหนดให้เคลื่อนที่จะไปถึงสมดุลคงที่ซึ่งเมื่อตีความเท่ากับระบบที่ใช้ ระบบจากสตริงต้นฉบับจะสอดคล้องกับสตริงเอาต์พุตที่ถูกต้อง สิ่งนี้รวบรวมความเห็นของ "ระบบอัตโนมัติ" เนื่องจากระบบจะเปลี่ยนไปตามสภาพเดิมตามเดิม แก้ไข : หลังจากอ่านคำตอบเล็ก ๆ น้อย ๆ ฉันก็ตระหนักว่าสิ่งที่ทำให้ฉันสับสนเกี่ยวกับเครื่องทัวริงก็คือมันไม่ได้ดูเล็กน้อย แบบจำลองการคำนวณของแคนนอนไม่ควรแสดงนัยสำคัญของการคำนวณหรือไม่ นอกจากนี้ในกรณีที่มันไม่ชัดเจนฉันรู้ว่า DFA นั้นไม่ใช่แบบจำลองการคำนวณที่สมบูรณ์ ขอบคุณสำหรับคำตอบ

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

1
การเปรียบเทียบทางทฤษฎีภาษาของ LL และไวยากรณ์กรัม
ผู้คนมักบอกว่าตัวแยกวิเคราะห์LR (k)นั้นมีพลังมากกว่าตัวแยกวิเคราะห์LL (k) ข้อความเหล่านี้ส่วนใหญ่คลุมเครือ โดยเฉพาะอย่างยิ่งเราควรเปรียบเทียบคลาสสำหรับคงที่หรือสหภาพกับkทั้งหมดหรือไม่ ดังนั้นสถานการณ์เป็นอย่างไร โดยเฉพาะอย่างยิ่งฉันสนใจที่ LL (*) จะเข้ากันได้อย่างไรkkkkkk เท่าที่ฉันรู้ชุดของตัวแยกไวยากรณ์ LL และ LR ที่เกี่ยวข้องนั้นเป็น orthogonal ดังนั้นให้เราพูดถึงภาษาที่สร้างขึ้นโดยชุดของไวยากรณ์ที่เกี่ยวข้อง ให้แสดงถึงระดับของภาษาที่สร้างขึ้นโดยไวยากรณ์ที่สามารถแยกวิเคราะห์โดยตัวแยกวิเคราะห์L R ( k )และคล้ายกับคลาสอื่น ๆL R ( k )LR(k)LR(k)L R ( k )LR(k)LR(k) ฉันสนใจในความสัมพันธ์ต่อไปนี้: L L ( k ) ⊆?L R ( k )LL(k)⊆?LR(k)LL(k) \overset{?}{\subseteq} LR(k) ⋃∞i=1LL(k)⊆?⋃∞i=1LR(k)⋃i=1∞LL(k)⊆?⋃i=1∞LR(k)\bigcup_{i=1}^{\infty} LL(k) \overset{?}{\subseteq} \bigcup_{i=1}^{\infty} LR(k) ⋃∞i=1LL(k)=?LL(∗)⋃i=1∞LL(k)=?LL(∗)\bigcup_{i=1}^{\infty} …

6
การตรวจสอบโปรแกรมอย่างเป็นทางการในทางปฏิบัติ
ในฐานะวิศวกรซอฟต์แวร์ฉันเขียนโค้ดจำนวนมากสำหรับผลิตภัณฑ์อุตสาหกรรม สิ่งที่ค่อนข้างซับซ้อนกับคลาส, เธรด, ความพยายามในการออกแบบบางอย่าง แต่ยังมีบางอย่างที่ทำให้ประสิทธิภาพลดลง ฉันทำการทดสอบจำนวนมากและฉันเหนื่อยกับการทดสอบดังนั้นฉันจึงสนใจในเครื่องมือพิสูจน์อย่างเป็นทางการเช่น Coq, Isabelle ... ฉันสามารถใช้สิ่งเหล่านี้เพื่อพิสูจน์อย่างเป็นทางการว่ารหัสของฉันปราศจากข้อบกพร่องและสามารถทำได้ ด้วยหรือ - แต่ทุกครั้งที่ฉันตรวจสอบหนึ่งในเครื่องมือเหล่านี้ฉันเดินออกไปโดยไม่มั่นใจว่าพวกเขาสามารถใช้งานได้สำหรับวิศวกรรมซอฟต์แวร์ทุกวัน ตอนนี้นั่นอาจเป็นฉันเท่านั้นและฉันกำลังมองหาตัวชี้ / ความคิดเห็น / ความคิดเกี่ยวกับที่ :-) โดยเฉพาะฉันได้รับความประทับใจว่าการทำให้หนึ่งในเครื่องมือเหล่านี้ใช้งานได้สำหรับฉันจะต้องใช้เงินลงทุนจำนวนมากในการกำหนดวัตถุวิธีการ ... ของโปรแกรมภายใต้การพิจารณาอย่างเหมาะสม จากนั้นฉันก็สงสัยว่านักปราชญ์จะไม่หมดพลังไอน้ำเพราะขนาดของทุกสิ่งที่มันต้องจัดการด้วยหรือไม่ หรือบางทีฉันอาจต้องกำจัดผลข้างเคียง (เครื่องมือพิสูจน์พวกนั้นดูเหมือนจะทำได้ดีกับภาษาที่ประกาศ) และฉันสงสัยว่ามันจะส่งผลให้ "รหัสที่พิสูจน์แล้ว" ซึ่งไม่สามารถใช้ได้เพราะมันจะไม่เร็วหรือ เล็กพอ นอกจากนี้ฉันไม่มีความหรูหราในการเปลี่ยนภาษาที่ฉันทำงานด้วยมันต้องเป็น Java หรือ C ++: ฉันไม่สามารถบอกเจ้านายของฉันได้ว่าฉันจะใช้รหัสใน OXXXml นับจากนี้ไปเพราะเป็นภาษาเดียวใน ซึ่งฉันสามารถพิสูจน์ความถูกต้องของรหัส ... ใครบางคนที่มีประสบการณ์มากขึ้นเกี่ยวกับเครื่องมือพิสูจน์ความคิดเห็นอย่างเป็นทางการ? อีกครั้ง - ฉันจะรักในการใช้เครื่องมือสอบมาตรอย่างเป็นทางการผมคิดว่าพวกเขาจะดี แต่ผมมีความประทับใจที่พวกเขาอยู่ในหอคอยงาช้างที่ฉันไม่สามารถเข้าถึงได้จากคูต่ำต้อยของ Java / C ++ ... (PS: …

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

14
ฉันจะอธิบายให้ผู้ปกครองของฉันเห็นว่าฉันเรียนภาษาโปรแกรมได้อย่างไร
ฉันกำลังจบปริญญาโทด้านวิทยาศาสตร์คอมพิวเตอร์ ฉันสนใจในการเขียนโปรแกรมภาษาโดยเฉพาะในระบบพิมพ์ ฉันมีความสนใจในการวิจัยในสาขานี้และภาคการศึกษาถัดไปฉันจะเริ่มปริญญาเอกในเรื่อง ต่อไปนี้เป็นคำถามที่แท้จริง: ฉันจะอธิบายสิ่งที่ฉันต้องการทำกับผู้ที่ไม่มีความรู้มาก่อนในสาขาวิทยาศาสตร์คอมพิวเตอร์หรือสาขาที่เกี่ยวข้องได้อย่างไร ชื่อนี้มาจากข้อเท็จจริงที่ว่าฉันไม่สามารถอธิบายสิ่งที่ฉันทำกับพ่อแม่เพื่อนและอื่น ๆ ได้ ใช่ฉันสามารถพูดได้ว่า"ประเด็นทั้งหมดคือการช่วยให้นักพัฒนาซอฟต์แวร์เขียนซอฟต์แวร์ที่ดีขึ้น"แต่ฉันไม่คิดว่ามันจะมีประโยชน์จริง ๆ : พวกเขาไม่ทราบว่า "การเขียนโปรแกรม" พวกเขาไม่ได้เบาะแสว่ามันหมายถึงอะไร รู้สึกเหมือนฉันกำลังบอกว่าฉันเป็นช่างซ่อมรถยนต์ให้กับใครบางคนจากยุคกลาง: พวกเขาไม่รู้ว่าฉันกำลังพูดถึงอะไรอยู่ ใครบ้างที่มีการเปรียบเทียบที่ดีกับโลกแห่งความจริง? ตัวอย่างการทำให้กระจ่างทำให้เกิดเหตุการณ์ "a-ha" ฉันควรแสดงตัวอย่างรหัสสั้น ๆ และง่าย ๆ ให้แก่อายุ 60 ปีขึ้นไปที่ไม่มีประสบการณ์ด้านวิทยาการคอมพิวเตอร์ (หรือด้านวิชาการ) หรือไม่? ถ้าเป็นเช่นนั้นฉันควรใช้ภาษาใด มีใครที่นี่ประสบปัญหาที่คล้ายกัน?

10
ภาษาไดนามิกเช่น Ruby / Python สามารถเข้าถึง C / C ++ เหมือนประสิทธิภาพได้หรือไม่?
ฉันสงสัยว่าเป็นไปได้ไหมที่จะสร้างคอมไพเลอร์สำหรับภาษาไดนามิกเช่น Ruby เพื่อให้มีประสิทธิภาพที่คล้ายกันและเทียบเท่ากับ C / C ++? จากสิ่งที่ฉันเข้าใจเกี่ยวกับคอมไพเลอร์ใช้ Ruby เช่นการคอมไพล์โค้ด Ruby นั้นไม่สามารถมีประสิทธิภาพได้เพราะวิธีที่ Ruby จัดการกับการสะท้อนคุณสมบัติต่าง ๆ เช่นการแปลงชนิดอัตโนมัติจากจำนวนเต็มเป็นจำนวนเต็มใหญ่และการขาดการพิมพ์แบบคงที่ สำหรับทับทิมยากมาก เป็นไปได้ไหมที่จะสร้างคอมไพเลอร์ที่สามารถรวบรวม Ruby หรือภาษาไดนามิกอื่น ๆ ไปยังไบนารีที่ทำงานใกล้ชิดกับ C / C ++ มากขึ้น? มีเหตุผลพื้นฐานที่ทำให้คอมไพเลอร์ JIT เช่น PyPy / Rubinius ในที่สุดจะหรือไม่จะไม่ตรงกับ C / C ++ ในการทำงาน? หมายเหตุ: ฉันเข้าใจว่า "ประสิทธิภาพ" อาจคลุมเครือดังนั้นเพื่อล้างสิ่งนั้นฉันหมายความว่าถ้าคุณสามารถทำ X ใน C / C ++ ด้วยประสิทธิภาพ …

12
ทำไมคอมไพเลอร์ไม่ใส่ deallocations โดยอัตโนมัติ?
ในภาษาเช่น C โปรแกรมเมอร์คาดว่าจะแทรกการโทรฟรี ทำไมคอมไพเลอร์ไม่ทำสิ่งนี้โดยอัตโนมัติ มนุษย์ทำในเวลาที่เหมาะสม (ไม่สนใจข้อบกพร่อง) ดังนั้นจึงเป็นไปไม่ได้ แก้ไข: สำหรับการอ้างอิงในอนาคตนี่คือการสนทนาอื่นที่มีตัวอย่างที่น่าสนใจ

3
อัลกอริธึมแบบแทนที่สำหรับการแทรกอาร์เรย์
คุณได้รับองค์ประกอบมากมาย2n2n2n a1,a2,…,an,b1,b2,…bna1,a2,…,an,b1,b2,…bna_1, a_2, \dots, a_n, b_1, b_2, \dots b_n ภารกิจคือการสอดแทรกอาร์เรย์โดยใช้อัลกอริทึมแบบแทนที่ที่อาร์เรย์ผลลัพธ์จะมีลักษณะดังนี้ b1,a1,b2,a2,…,bn,anb1,a1,b2,a2,…,bn,anb_1, a_1, b_2, a_2, \dots , b_n, a_n หากความต้องการในสถานที่ไม่มีเราสามารถสร้างอาร์เรย์และองค์ประกอบการคัดลอกใหม่ที่ให้อัลกอริทึมเวลาO(n)O(n)\mathcal{O}(n) ด้วยความต้องการในสถานที่แบ่งและพิชิตอัลกอริทึมกระแทกขึ้นขั้นตอนวิธีการที่จะเป็นlog)θ(nlogn)θ(nlog⁡n)\theta(n \log n) ดังนั้นคำถามคือ: มีอัลกอริธึมเวลาซึ่งอยู่ในสถานที่ด้วยหรือไม่?O(n)O(n)\mathcal{O}(n) (หมายเหตุ: คุณสามารถสันนิษฐานได้ว่ารูปแบบ WORD RAM ราคาเท่ากันดังนั้นจึงแปลเป็นจำกัด พื้นที่)O(1)O(1)\mathcal{O}(1)

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