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

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

4
จะตัดสินการเชื่อมต่อที่น่าจะเป็นในเครือข่ายโซเชียลได้อย่างไร?
ฉันสงสัยในการกำหนดวิธีการจัดการอัลกอริทึม "เพื่อนที่แนะนำ" Facebookมีคุณสมบัติที่จะแนะนำบุคคลที่คุณคิดว่าคุณอาจคุ้นเคย โดยปกติผู้ใช้เหล่านี้ (ยกเว้นกรณีขอบที่ผู้ใช้แนะนำโดยเฉพาะเพื่อน ) มีเครือข่ายที่คล้ายกันมากกับตัวเอง นั่นคือจำนวนเพื่อนที่เหมือนกันอยู่ในระดับสูง ฉันถือว่า Twitter เป็นไปตามเส้นทางที่คล้ายกันสำหรับกลไก "Who To Follow" ของพวกเขา Stephen Doyle (Igy)พนักงาน Facebook แนะนำว่าฟีดข่าวที่เกี่ยวข้องที่ใช้สูตร EdgeRankซึ่งดูเหมือนว่าบ่งบอกว่ามีค่ามากกว่าเพื่อนเช่นรูปลักษณ์เป็นโพสต์ที่คล้ายกัน ผู้ใช้รายอื่นแนะนำระบบ Google Rank Facebook ระบุว่าการเพิ่มประสิทธิภาพฟีดข่าวของพวกเขาเป็นโดยที่Σ ยูอีWอีdอีΣยูอีWอีdอี\sum u_{e}w_{e}d_{e} ยูอียูอีu_{e} = คะแนนความสัมพันธ์ระหว่างผู้ใช้ที่ดูและผู้สร้างขอบ = น้ำหนักสำหรับขอบนี้ (สร้าง, ความคิดเห็น, ชอบ, แท็ก, ฯลฯ ) = ปัจจัยการสลายตัวของเวลาขึ้นอยู่กับระยะเวลาที่สร้างขอบ WอีWอีw_{e} dอีdอีd_{e} การสรุปรายการเหล่านี้ควรจะให้อันดับของวัตถุที่ฉันถือว่าเป็นไอ้บอกใบ้หมายถึงบางสิ่งในรูปแบบที่คล้ายกันใช้สำหรับเพื่อน ดังนั้นฉันเดาว่านี่เป็นวิธีการเชื่อมต่อสำหรับทุกประเภทที่ทำโดยทั่วไปผ่านระบบอันดับหรือไม่

3
เคียวรีย่อยเพิ่มพลังการแสดงออกให้กับเคียวรี SQL หรือไม่?
SQL ต้องการเคียวรีย่อยหรือไม่? ลองนึกภาพการนำภาษาคิวรีที่มีโครงสร้างมาใช้อย่างพอเพียงสำหรับฐานข้อมูลที่เกี่ยวข้อง เนื่องจากโครงสร้างของSELECTคำสั่งcanonical SQL นั้นค่อนข้างสำคัญสำหรับเรื่องนี้ฉันจึงไม่สนใจโดยตรงกับพีชคณิตเชิงสัมพันธ์ แต่คุณสามารถใส่กรอบนี้ในเทอมเหล่านั้นโดยกำหนดข้อ จำกัด ที่เหมาะสมในรูปแบบของนิพจน์ SQL แบบSELECTแบบสอบถามโดยทั่วไปประกอบด้วยการฉาย (คนSELECTส่วน) จำนวนบางส่วนของJOINการดำเนินงาน (คนJOINส่วน) จำนวนของSELECTION การดำเนินงาน (ใน SQL ที่WHEREคำสั่ง) และจากนั้นตั้งฉลาดการดำเนินงาน ( UNION, EXCEPT, INTERSECTฯลฯ ) ตามมาด้วยอีกSELECTแบบสอบถามSQL ตารางที่เข้าร่วมสามารถเป็นผลลัพธ์ของนิพจน์ที่คำนวณได้ กล่าวอีกนัยหนึ่งเราสามารถมีคำสั่งเช่น: SELECT t1.name, t2.address FROM table1 AS t1 JOIN (SELECT id, address FROM table2 AS t3 WHERE t3.id = t1.id) AS t2 WHERE …

2
ทำไมฟังก์ชั่นทั้งหมดถึงไม่สามารถนับได้?
เราเรียนรู้เกี่ยวกับแนวคิดของฟังก์ชั่นการแจกแจง ในทางปฏิบัติมันสอดคล้องกับภาษาการเขียนโปรแกรม ในคำพูดที่ผ่านอาจารย์กล่าวว่าชั้นเรียนของฟังก์ชั่นทั้งหมด (เช่นฟังก์ชั่นที่มักจะจบลงสำหรับการป้อนข้อมูลทุกครั้ง) จะไม่นับ นั่นหมายความว่าเราไม่สามารถประดิษฐ์ภาษาการเขียนโปรแกรมที่ช่วยให้เราสามารถเขียนฟังก์ชั่นทั้งหมด แต่ไม่มีคนอื่น --- ซึ่งน่าจะมี! แล้วเราจะต้องยอมรับศักยภาพของการไม่เลิกจ้างอย่างไรถ้าเราต้องการพลังการคำนวณที่เหมาะสม?

2
การหาคำศัพท์แลมบ์ดาที่มีประเภทยูเนี่ยน
หนังสือเรียนจำนวนมากครอบคลุมประเภทของจุดตัดในแลมบ์ดา - แคลคูลัส กฎการพิมพ์สำหรับการแยกสามารถกำหนดได้ดังต่อไปนี้ (ด้านบนของแลมบ์ดาแคลคูลัสที่พิมพ์ด้วยการพิมพ์ย่อย): Γ⊢M:T1Γ⊢M:T2Γ⊢M:T1∧T2(∧I)Γ⊢M:⊤(⊤I)Γ⊢M:T1Γ⊢M:T2Γ⊢M:T1∧T2(∧I)Γ⊢M:⊤(⊤I) \dfrac{\Gamma \vdash M : T_1 \quad \Gamma \vdash M : T_2} {\Gamma \vdash M : T_1 \wedge T_2} (\wedge I) \qquad\qquad \dfrac{} {\Gamma \vdash M : \top} (\top I) ประเภทแยกมีคุณสมบัติที่น่าสนใจเกี่ยวกับการทำให้เป็นมาตรฐาน: คำแลมบ์ดาสามารถพิมพ์ได้โดยไม่ต้องใช้⊤I⊤I\top Iกฎถ้ามันเป็นมาตรฐานอย่างยิ่ง คำแลมบ์ดายอมรับประเภทที่ไม่มี⊤⊤\top iff ซึ่งมีรูปแบบปกติ ถ้าหากแทนที่จะเพิ่มทางแยกเราจะเพิ่มสหภาพ Γ⊢M:T1Γ⊢M:T1∨T2(∨I1)Γ⊢M:T2Γ⊢M:T1∨T2(∨I2)Γ⊢M:T1Γ⊢M:T1∨T2(∨I1)Γ⊢M:T2Γ⊢M:T1∨T2(∨I2) \dfrac{\Gamma \vdash M : T_1} {\Gamma \vdash …

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

4
การสุ่มตัวอย่างแบบสม่ำเสมอจากเริม
ฉันกำลังมองหาอัลกอริทึมในการสร้างอาร์เรย์ของตัวเลขสุ่ม N ซึ่งผลรวมของตัวเลข N คือ 1 และตัวเลขทั้งหมดอยู่ภายใน 0 และ 1 ตัวอย่างเช่น N = 3 จุดสุ่ม (x, y, z) ควรอยู่ภายในสามเหลี่ยม: x + y + z = 1 0 < x < 1 0 < y < 1 0 < z < 1 โดยหลักการแล้วฉันต้องการให้แต่ละจุดภายในพื้นที่มีความน่าจะเป็นเท่ากัน ถ้ามันยากเกินไปฉันสามารถวางข้อกำหนดได้ ขอบคุณ

1
เซตย่อยปัญหาผลรวมที่มีเงื่อนไขการหารมากมาย
ให้SSSเป็นเซตของตัวเลขธรรมชาติ เราพิจารณาSSSภายใต้คำสั่งหารหารบางส่วนเช่นs1≤s2⟺s1∣s2s1≤s2⟺s1∣s2s_1 \leq s_2 \iff s_1 \mid s_2 2 ปล่อย antichain\}α(S)=max{|V|∣V⊆S,Vα(S)=max{|V|∣V⊆S,V\qquad \displaystyle \alpha(S) = \max \{|V| \mid V\subseteq S, V}}\} หากเราพิจารณาปัญหาผลรวมย่อยของเซตของชุดตัวเลขในSSSเราจะพูดถึงอะไรเกี่ยวกับความซับซ้อนของปัญหาที่เกี่ยวข้องกับα(S)α(S)\alpha(S) ? มันง่ายที่จะดูว่าα(S)=1α(S)=1\alpha(S)=1แล้วปัญหาเป็นเรื่องง่าย หมายเหตุ: มันเป็นเรื่องง่ายแม้สำหรับปัญหาเป้หนักเมื่อ\ alpha (S) = 1 \α(S)=1α(S)=1\alpha(S)=1††\dagger ††\dagger แก้ปัญหาเป้หลังโดย M. Hartmann และ T. Olmstead (1993)

2
วิธีการตรวจสอบอย่างมีประสิทธิภาพว่าบันไดที่กำหนดนั้นถูกต้องหรือไม่?
ที่สควอชคลับในพื้นที่ของฉันมีบันไดซึ่งทำงานดังต่อไปนี้ ในตอนต้นของฤดูกาลเราสร้างตารางที่มีชื่อของสมาชิกแต่ละคนของสโมสรในบรรทัดแยกต่างหาก จากนั้นเราเขียนจำนวนเกมที่ชนะและจำนวนเกมที่เล่นถัดจากแต่ละชื่อ (ในรูปแบบ: ผู้เล่นชนะ / เกม) ดังนั้นในตอนต้นของฤดูกาลตารางจะมีลักษณะดังนี้: Carol 0/0 Billy 0/0 Alice 0/0 Daffyd 0/0 ผู้เล่นสองคนอาจเล่นคู่กับผู้เล่นคนหนึ่งชนะ หากผู้เล่นที่ใกล้ที่สุดด้านล่างของตารางชนะตำแหน่งของผู้เล่นจะเปลี่ยน จากนั้นเราทำซ้ำขั้นตอนที่ 2 อัปเดตจำนวนชัยชนะและเกมถัดจากผู้เล่นแต่ละคน ตัวอย่างเช่นถ้าอลิซชนะบิลลี่เราก็มี Carol 0/0 Alice 1/1 Billy 0/1 Daffyd 0/0 การแข่งขันเหล่านี้ยังคงดำเนินต่อไปตลอดทั้งฤดูกาล น่าเสียดายที่การอัปเดตเกิดขึ้นในลักษณะที่ค่อนข้างจับจดดังนั้นจึงเกิดข้อผิดพลาดขึ้น ด้านล่างนี้เป็นตัวอย่างของตารางที่ไม่ถูกต้องกล่าวคือตารางที่ไม่สามารถสร้างได้โดยทำตามขั้นตอนด้านบนอย่างถูกต้องสำหรับบางคำสั่งเริ่มต้น (เราลืมคำสั่งที่เราใช้เมื่อต้นฤดูกาล) และลำดับการแข่งขันและผลลัพธ์: Alice 0/1 Billy 1/1 Carol 0/1 Daffyd 0/0 Alice 2/3 Billy 0/1 Carol 0/0 Daffyd …

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

2
คอมไพเลอร์แบทช์คืออะไร?
ฉันมีใบเสนอราคาต่อไปนี้จากหลักสูตรของคอมไพเลอร์ (ในบริบทของการระบายสีกราฟ): เนื่องจากช้าการทำกราฟสีจึงมีแนวโน้มที่จะใช้ในคอมไพเลอร์แบบแบทช์ในขณะที่การสแกนเชิงเส้นมีแนวโน้มที่จะใช้ในคอมไพเลอร์ JIT ฉันไม่พบคำจำกัดความที่ชัดเจนทางออนไลน์ ดังนั้นสิ่งที่ทำให้คอมไพเลอร์เป็นชุดคอมไพเลอร์?
28 compilers 

2
มีปัญหาเฉพาะใด ๆ ที่ทราบว่าไม่สามารถตัดสินใจได้ด้วยเหตุผลอื่นนอกจากแนวทแยงมุมการอ้างอิงตนเองหรือการลดทอนหรือไม่?
ปัญหาที่แก้ไม่ได้ทุกอย่างที่ฉันรู้ว่าตกอยู่ในหนึ่งในหมวดหมู่ต่อไปนี้: ปัญหาที่ไม่สามารถตัดสินใจได้เนื่องจาก diagonalization (การอ้างอิงตนเองทางอ้อม) ปัญหาเหล คุณอาจพบปัญหาที่ไม่อาจคาดเดาได้มากมายเกี่ยวกับความซับซ้อนของ Kolmogorov ในค่ายนี้ ปัญหาที่ไม่สามารถตัดสินใจได้เนื่องจากการอ้างอิงตนเองโดยตรง ตัวอย่างเช่นภาษาสากลสามารถแสดงให้เห็นว่า undecidable ด้วยเหตุผลดังต่อไปนี้: ถ้ามันเป็น decidable แล้วก็เป็นไปได้ที่จะใช้ทฤษฎีการเรียกซ้ำของ Kleene เพื่อสร้าง TM ที่ได้รับการเข้ารหัสของตัวเองถามว่าจะยอมรับอินพุตของตัวเองหรือไม่ จากนั้นก็ตรงกันข้าม ปัญหาที่ไม่สามารถตัดสินใจได้เนื่องจากการลดลงของปัญหาที่ไม่สามารถตัดสินใจได้ที่มีอยู่ ตัวอย่างที่ดีที่นี่รวมถึงปัญหาการโพสต์จดหมาย (ลดจากปัญหาการหยุดชะงัก) และ Entscheidungsproblem เมื่อฉันสอนทฤษฎีความสามารถในการคำนวณให้กับนักเรียนของฉันนักเรียนจำนวนมากก็รับเรื่องนี้เช่นกันและมักถามฉันว่ามีปัญหาใด ๆ ที่เราสามารถพิสูจน์ได้ว่าไม่สามารถตัดสินใจได้โดยไม่ต้องกลับไปใช้กลอุบายการอ้างอิงตนเองบางประเภท ฉันสามารถพิสูจน์แบบ nonconstructively ว่ามีปัญหาที่ไม่อาจตัดสินใจได้หลายอย่างโดยการโต้แย้งเชิง cardinality อย่างง่ายที่เกี่ยวข้องกับจำนวน TMs กับจำนวนภาษา แต่สิ่งนี้ไม่ได้เป็นตัวอย่างเฉพาะของภาษา undecidable มีภาษาใดที่ไม่สามารถระบุได้ด้วยเหตุผลที่ไม่ได้ระบุไว้ข้างต้น ถ้าเป็นเช่นนั้นพวกเขาคืออะไรและใช้เทคนิคอะไรในการแสดงความลังเลของพวกเขา

3
จะเกิดอะไรขึ้นเมื่อการเชื่อมต่ออินเทอร์เน็ตเร็วกว่าความเร็วในการเขียนที่เก็บข้อมูล?
หากพยายามดาวน์โหลดไฟล์ด้วยความเร็ว 800 Mb / s (100 MB / s) ลงบนฮาร์ดไดรฟ์ที่มีความเร็วในการเขียน 500 Mb / s (62.5 MB / s) จะเกิดอะไรขึ้น ระบบจะ จำกัด ความเร็วในการดาวน์โหลดหรือไม่

2
เหตุใด C ประเภทโมฆะจึงไม่คล้ายกับประเภทที่ว่าง / ด้านล่าง
Wikipedia ตลอดจนแหล่งข้อมูลอื่น ๆ ที่ฉันได้พบรายการvoidประเภทC เป็นหน่วยประเภทซึ่งตรงข้ามกับประเภทที่ว่างเปล่า ฉันพบว่ามันสับสนเพราะฉันคิดว่าvoidเหมาะกับนิยามของประเภทที่ว่าง / ล่าง ไม่มีค่านิยมใด ๆ อยู่voidเท่าที่ฉันจะบอกได้ ฟังก์ชั่นที่มีประเภทคืนค่าเป็นโมฆะระบุว่าฟังก์ชั่นจะไม่ส่งคืนสิ่งใดดังนั้นจึงสามารถทำงานได้เพียงผลข้างเคียงเท่านั้น ตัวชี้ชนิดvoid*เป็นชนิดย่อยของชนิดตัวชี้อื่นทั้งหมด นอกจากนี้การแปลงไปยังและจากvoid*ใน C นั้นเป็นนัย ผมไม่แน่ใจว่าถ้าจุดสุดท้ายมีบุญใด ๆ ที่เป็นข้อโต้แย้งสำหรับvoidการเป็นประเภทที่ว่างเปล่าเป็นมากหรือน้อยเป็นกรณีพิเศษที่มีความสัมพันธ์ไม่มากที่จะvoid*void ในทางกลับกันvoidตัวมันเองไม่ใช่ประเภทย่อยของประเภทอื่นทั้งหมดซึ่งเท่าที่ฉันสามารถบอกได้ว่าเป็นข้อกำหนดสำหรับประเภทที่จะเป็นประเภทด้านล่าง
28 type-theory  c  logic  modal-logic  coq  equality  coinduction  artificial-intelligence  computer-architecture  compilers  asymptotics  formal-languages  asymptotics  landau-notation  asymptotics  turing-machines  optimization  decision-problem  rice-theorem  algorithms  arithmetic  floating-point  automata  finite-automata  data-structures  search-trees  balanced-search-trees  complexity-theory  asymptotics  amortized-analysis  complexity-theory  graphs  np-complete  reductions  np-hard  algorithms  string-metrics  computability  artificial-intelligence  halting-problem  turing-machines  computation-models  graph-theory  terminology  complexity-theory  decision-problem  polynomial-time  algorithms  algorithm-analysis  optimization  runtime-analysis  loops  turing-machines  computation-models  recurrence-relation  master-theorem  complexity-theory  asymptotics  parallel-computing  landau-notation  terminology  optimization  decision-problem  complexity-theory  polynomial-time  counting  coding-theory  permutations  encoding-scheme  error-correcting-codes  machine-learning  natural-language-processing  algorithms  graphs  social-networks  network-analysis  relational-algebra  constraint-satisfaction  polymorphisms  algorithms  graphs  trees 

6
มีโปรแกรมที่สามารถ 'แปล' ซอร์สโค้ดระหว่างสองภาษาหรือไม่?
มีโปรแกรมที่สามารถ 'แปล' ซอร์สโค้ดระหว่างสองภาษาใด ๆ (สมมติว่าผู้แปลมีสิทธิ์เข้าถึงไลบรารี่ที่จำเป็น) หรือไม่? ถ้ามีพวกเขาทำงานอย่างไร (เทคนิคที่ใช้ความรู้ที่จำเป็น ฯลฯ )? พวกเขาจะสร้างได้อย่างไร? หากไม่เป็นเช่นนั้นข้อ จำกัด อะไรที่ขัดขวางการพัฒนาของพวกเขา นี่เป็นปัญหาที่สมบูรณ์แบบของ AI หรือไม่ (การแปลภาษาธรรมชาติแสดงเป็นรายการเดียว) หรือไม่ คาดว่าการแปลง EDITจะเกิดขึ้นก็ต่อเมื่อภาษานั้นมีความสามารถในการแสดงออกเท่ากันสามารถแก้ไขปัญหาประเภทเดียวกันได้และรหัสที่จะทำการแปลงสามารถแสดงเป็นภาษาปลายทางได้ (เช่นการแปลงจากเชลล์สคริปต์เป็น MATLAB ไม่เป็นที่คาดหมาย)

3
เหตุใดการเรียงลำดับการเลือกจึงเร็วกว่าการจัดเรียงฟอง
มันเขียนไว้ใน Wikipediaว่า "... การเรียงลำดับการเลือกเกือบจะดีกว่าการเรียงลำดับฟองและเรียงลำดับคำพังเพย" ใครช่วยอธิบายหน่อยได้ไหมว่าทำไมการเรียงลำดับการเลือกจึงถือว่าเร็วกว่าการเรียงลำดับฟองแม้ว่าทั้งคู่จะมี: ความซับซ้อนของเวลากรณีที่แย่ที่สุด :O ( n2)O(n2)\mathcal O(n^2) จำนวนการเปรียบเทียบ : O ( n2)O(n2)\mathcal O(n^2) ความซับซ้อนของเวลากรณีที่ดีที่สุด : การจัดเรียงฟอง:O (n)O(n)\mathcal O(n) ตัวเลือกการเรียง:O ( n2)O(n2)\mathcal O(n^2) ความซับซ้อนของเวลากรณีโดยเฉลี่ย : การจัดเรียงฟอง:O ( n2)O(n2)\mathcal O(n^2) ตัวเลือกการเรียง:O ( n2)O(n2)\mathcal O(n^2)

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