ผลลัพธ์เชิงประจักษ์ในเอกสาร CS


31

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


26
คำตอบสั้น ๆ คือ "วิทยาศาสตร์คอมพิวเตอร์" มีหลายสิ่งหลายอย่าง บางส่วนเช่น (บางส่วน) AI เป็นวิทยาศาสตร์จริงๆ ส่วนอื่น ๆ คือวิศวกรรมและคณิตศาสตร์ (ใช้) ด้านทฤษฎี บางส่วนของ HCI เป็นเหมือนศิลปะมากขึ้น วิทยาการคอมพิวเตอร์เป็นเต็นท์ที่กว้างขวาง
Aaron Roth

6
หากคุณมีหลักฐานทำไมคุณถึงต้องมีผลลัพธ์เชิงประจักษ์
Aryabhata

2
@Moron: คุณจะพิสูจน์ได้อย่างไรว่าอัลกอริทึมสามารถนำไปใช้งานได้โดยไม่ต้องใช้
Jukka Suomela

8
ทฤษฎี CS น่าจะคล้ายกับคณิตศาสตร์ฟิสิกส์ซึ่งหลีกเลี่ยงผลลัพธ์เชิงประจักษ์ หากคุณต้องการบางอย่างเช่น Experimental Physics คุณสามารถดูการวิจัยในวิศวกรรมซอฟต์แวร์การตรวจสอบโปรแกรมระบบฐานข้อมูลและอื่น ๆ
Yaroslav Bulatov

4
nitpicking: " วิธีการทางวิทยาศาสตร์"?
Kaveh

คำตอบ:


21

คณิตศาสตร์ก็เป็นศาสตร์เช่นกันและคุณจะต้องค้นหาเป็นเวลานานเพื่อค้นหาผลลัพธ์เชิงประจักษ์ที่ตีพิมพ์ในสาขานี้ (แม้ว่าฉันคิดว่าต้องมีบางอย่าง) มีโดเมนวิทยาศาสตร์อื่น ๆ ที่ "บทแทรกและบทพิสูจน์" มีค่ามากกว่าประสบการณ์เช่นฟิสิกส์ควอนตัม ที่กล่าวว่าวิทยาศาสตร์ส่วนใหญ่ผสมทฤษฎีและการปฏิบัติ (ด้วยอัตราส่วนต่าง ๆ ) และวิทยาศาสตร์คอมพิวเตอร์ก็ไม่มีข้อยกเว้น

วิทยาการคอมพิวเตอร์มีรากฐานมาจากคณิตศาสตร์ (ดูชีวประวัติของทัวริงเช่นhttp://en.wikipedia.org/wiki/Alan_Turing ) และเป็นผลลัพธ์จำนวนมาก (โดยทั่วไปขนานนามว่าเป็น "วิทยาศาสตร์คอมพิวเตอร์เชิงทฤษฎี") ประกอบด้วยการพิสูจน์ คอมพิวเตอร์ในรูปแบบการคำนวณบางอย่างสามารถแก้ปัญหาบางอย่างในการดำเนินการตามจำนวนที่กำหนด (เช่นการประชุมเช่น FOCS, STOC, SODA, SoCG ฯลฯ ) อย่างไรก็ตามผลลัพธ์อื่น ๆ ของวิทยาการคอมพิวเตอร์เกี่ยวข้องกับการบังคับใช้ทฤษฎีเหล่านั้นกับชีวิตจริงผ่านการวิเคราะห์ผลการทดลอง (เช่นการประชุมเช่น WADS, ALENEX, ฯลฯ ... )

มันมักจะแนะนำว่าอุดมคติคือความสมดุลที่ดีระหว่างทฤษฎีและการปฏิบัติเช่นเดียวกับใน "วิทยาศาสตร์ธรรมชาติ" ซึ่งการสังเกตของการทดลองแจ้งให้สร้างทฤษฎีใหม่ซึ่งจะแนะนำการทดลองใหม่เพื่อยืนยันหรืออ่อนแอเหล่านั้น: เป็นจำนวนมาก การประชุมพยายามที่จะยอมรับทั้งผลการทดลองและเชิงทฤษฎี (เช่น ESA, ICALP, LATIN, CPM, ISAAC, ฯลฯ ... ) สาขาย่อยของ "อัลกอริธึมและโครงสร้างข้อมูล" ในวิทยาการคอมพิวเตอร์อาจได้รับความไม่สมดุลในแง่ที่ว่า "การประชุม" โดยทั่วไปแล้วจะมีการจัดอันดับสูงกว่าการทดลองทางวิทยาศาสตร์ ฉันเชื่อว่าสิ่งนี้ไม่เป็นความจริงในสาขาย่อยอื่น ๆ ของวิทยาศาสตร์คอมพิวเตอร์เช่น HCI หรือ AI

หวังว่าจะช่วย


ขอบคุณมันช่วยได้มากจริงๆ ฉันมีความสนใจในทฤษฎีกราฟเมื่อเร็ว ๆ นี้และในเอกสารที่ฉันอ่านเกือบจะไม่มีพวกเขามีรหัสหรือผลการทดลอง นี่คือเหตุผลที่ฉันถาม เมื่อคุณทำคณิตศาสตร์บริสุทธิ์คุณไม่สามารถสร้างผลลัพธ์การทดลองได้ดังนั้นการพิสูจน์จึงเป็นทุกอย่าง แต่ในทฤษฎีกราฟมันไม่ใช่เรื่องยากที่จะเขียนโค้ดอัลกอริทึมของคุณและให้ผลลัพธ์การทดลองที่มีประโยชน์! มารับปัญหา MST กัน การใช้งานในอุตสาหกรรมปัจจุบันคือ Prim / Kruskal และ Boruvska และยังมีการอธิบายอัลกอริทึมที่มีประสิทธิภาพมากขึ้นในเอกสาร แต่พวกเขาไม่ได้ใช้เนื่องจากไม่มีใครได้เข้ารหัสพวกเขา
toto

1
ใช่คุณสามารถใช้อัลกอริทึมจากทฤษฎีกราฟ แต่สำหรับปัญหาที่น่าสนใจหลายอย่างในทฤษฎีกราฟนั่นคืออย่างน้อย -hard ที่จะไร้ประโยชน์เนื่องจากอินพุตเพียงเล็กน้อยเท่านั้นที่จะคำนวณได้ (ยอมรับได้) เนื่องจากความซับซ้อนของอัลกอริธึมเชิงเวลา ยังไม่มีข้อความP
Mathieu Chapelle

1
@ toto แน่นอนสิ่งที่คุณพูดนำไปใช้กับปัญหาบางอย่าง แต่สำหรับปัญหา MST คุณสามารถเห็นผลได้ (อาจจะค่อนข้างล้าสมัย) ในการดำเนินการบางส่วนของขั้นตอนวิธีการที่มีประสิทธิภาพในbooks.google.com/...
อาเบลโมลินา

1
@toto นี่ไม่ใช่เหตุผลเดียวที่ใช้อัลกอริทึมรุ่นเก่า สำหรับมุมมอง TCS ดีกว่าO ( n log n )เสมอ แต่ใหญ่โอสามารถซ่อนค่าคงที่ขนาดใหญ่ที่ทำให้อัลกอริทึมทำไม่ได้ในทางปฏิบัติ งานดังกล่าวมีวัตถุประสงค์เพื่อคน TCS และการเข้ารหัสอัลกอริทึมจะไม่ให้ประโยชน์หรือทำให้ผู้อ่านสับสน O(n)O(nเข้าสู่ระบบn)
chazisop

24

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

เพิ่มในการแก้ไข:

ขยายความคิดเห็นของฉันเพื่อตอบ Suresh เกี่ยวกับสิ่งที่ฉันหมายถึงโดย "บทบาท" ข้างต้นที่ Bell Labs และ AT&T Labs นักวิจัยในอัลกอริทึมได้รับการสนับสนุนให้พูดคุยกับผู้คนในการพัฒนา ฉันไม่ได้ทำสิ่งนี้มากเท่าที่ควรจะเป็น แต่ฉันได้รับกระดาษอย่างน้อยหนึ่งฉบับและฉันคิดว่ามันจะดีสำหรับสนามถ้ามีการสื่อสารระหว่างผู้คนในทฤษฎีที่มหาวิทยาลัยและผู้ปฏิบัติงานมากขึ้น . นี่ไม่ได้หมายความว่าฉันคิดว่าทุกคนที่คิดอัลกอริธึมควรเขียนโค้ด (แม้ว่ามันจะเป็นประโยชน์)

ในทางตรงกันข้ามอัลกอริทึมการเข้ารหัส (หรือมีรหัสนักเรียน) ที่คุณคิดว่าอาจใช้งานได้จริงอาจเป็นประโยชน์ในการปรับใช้โดยผู้ปฏิบัติงาน ลองพิจารณาตัวอย่างหนึ่ง Lempel และ Ziv เขียนบทความทางเทคนิคสองฉบับในปี 1977 และ 1978 เกี่ยวกับอัลกอริธึมการบีบอัดข้อมูลใหม่ ทุกคนไม่สนใจพวกเขา ในปี 1984 เวลช์เขียนบทความทางเทคนิคน้อยกว่ามากให้บิดเล็กน้อยบน LZ78 ที่ปรับปรุงประสิทธิภาพการทำงานบ้างและให้ผลการศึกษาขนาดเล็กเปรียบเทียบประสิทธิภาพกับวิธีการบีบอัดข้อมูลอื่น ๆ มันถูกตีพิมพ์ในวารสารที่อ่านโดยโปรแกรมเมอร์จำนวนหนึ่งและอัลกอริธึมได้รับโดย pseudocode สองสามบรรทัด วิธีการดังกล่าวได้รับการดัดแปลงอย่างรวดเร็วในหลายสถานที่ในที่สุดก็ส่งผลให้เกิดข้อพิพาทด้านทรัพย์สินทางปัญญาที่น่าอับอาย

แน่นอนหนึ่งในวิธีที่ดีที่สุดสำหรับนักวิจัยด้านอัลกอริธึมในการสื่อสารกับการฝึกฝนคือการผลิตนักศึกษาระดับบัณฑิตศึกษาที่ออกไปทำงานที่ Google, IBM หรือ บริษัท อื่น ๆ และเราก็กำลังทำเช่นนั้นอยู่ อีกวิธีหนึ่งอาจตอบคำถามของผู้ปฏิบัติงานในฟอรัมนี้ หวังว่าเราจะทำสิ่งที่สมเหตุสมผลด้วยเช่นกัน


4
คุณกำลังบอกว่าแม้ว่าในวิชาฟิสิกส์ไม่มีความคาดหวังของคนคนเดียวกันที่ทำทั้งสองอย่างในทางทฤษฎี CS เราควรทำทั้งสองอย่าง? เป็นเพราะแบบจำลองการคำนวณนั้นใกล้เคียงกับความเป็นจริงมากกว่าแบบจำลองฟิสิกส์หรือไม่?
Suresh Venkat

10
ฉันกำลังบอกว่านักทฤษฎีควรพูดคุยกับผู้ฝึกหัดมากขึ้น หากคุณดูประวัติของฟิสิกส์สิ่งเลวร้ายก็เริ่มเกิดขึ้นเมื่อนักทฤษฎีหยุดพูดคุยกับนักทดลอง ฉันคิดว่าเรามีการสื่อสารในปริมาณพอสมควรระหว่างทั้งสองกลุ่มในตอนนี้ แต่มันก็ไม่เจ็บที่จะมีมากกว่านี้
Peter Shor

3
ฉันจะไม่พูดคุยทั่วไป แต่ฉันคิดว่านักวิจัยหลายคนไม่สามารถเขียนโค้ด / ไม่ชอบได้และพวกเขาก็อยากปล่อยให้นักเรียนคนใดคนหนึ่งปฏิบัติงานจริงได้ นั่นเป็นกรณีของฉันและที่ปรึกษาของฉัน
toto

ความตึงเครียดที่เกี่ยวข้องกับสเปคอย่างเป็นทางการเมื่อเทียบกับการคำนวณเชิงปฏิบัติกลับไปไกลในประวัติศาสตร์ต้นกำเนิด ข้อมูลจำเพาะบางครั้งนำไปสู่ ​​(von Neumann ของ "ในทฤษฎีของคลื่นระเบิดนิ่ง" [1948] กับการจำลองการคำนวณภายหลัง) และบางครั้งนำไปสู่การคำนวณเชิงปฏิบัติ (Bowditch ของ "New American Practical Navigator" [1807] กับ Gauss ' [1827]) นักคณิตศาสตร์ที่ยิ่งใหญ่ที่สุด (เกาส์และฟอนนอยมันน์ในตัวอย่างที่อ้างถึงข้างต้น) มักจะรวมคุณสมบัติที่เป็นทางการกับการคำนวณเชิงปฏิบัติ
John Sidles

3
ประวัติความเป็นมาของ Lempel-Ziv และการดูโพสต์บน StackOverflow เพิ่งนำฉันไปสู่การกำหนดกฎเกณฑ์ที่ง่ายมากซึ่งอาจช่วยให้นักทฤษฎีอัลกอริทึมเกิดขึ้นกับผู้ฝึกหัด vy ที่ดำเนินการ: ถ้าคุณคิดว่าอัลกอริทึมของคุณ กระดาษ.
Peter Shor

17

พื้นที่การวิจัยหนึ่งที่ใช้วิธีการเชิงประจักษ์และวิธีการของวิทยาการคอมพิวเตอร์เชิงทฤษฎีคือสาขาที่เรียกว่า "การทดลองอัลกอริทึม" หรือ "อัลกอริทึมวิศวกรรม" เช่นเดียวกับ Chris ที่กล่าวถึงการคำนวณประสิทธิภาพสูงขึ้นอยู่กับสิ่งนี้เนื่องจากระบบที่ทันสมัยมีแคชที่ซับซ้อนและปัญหาเวลาแฝงที่เรามีเวลาในการสร้างแบบจำลองยาก

Gerth BrodalและPeter Sandersเป็นตัวอย่างที่ดีของนักวิจัยที่รักษาเท้าทั้งในอาณาจักร "พิสูจน์" และ "เชิงประจักษ์"

--Update 20/01 / 2013-- ฉันยังอยากจะพูดถึงการนำเสนอที่ดีโดยโรเบิร์ตเซดจ์วิก


4
ทั้ง ALENEX และ ESA สนับสนุนการทำงานของอัลกอริทึมและยังมีการประชุม (SAE) ในหัวข้อนี้
Suresh Venkat

SAE คืออะไร TLA นั้นไม่สามารถใช้งานได้ คุณมี URL ใช่ไหม
Peter Boothe

5
SAE เป็นคำผิดสำหรับ SEA ซึ่งเป็น Symposium on Algorithms ทดลอง
David Eppstein

1
นอกจากนี้คุณยังสามารถทำวิศวกรรมอัลกอริทึมอย่างเข้มงวดมากขึ้นเช่นปรับแต่งแบบจำลอง theoritcal เพื่อให้พอดีกับความเป็นจริง แต่ stil ทำการวิเคราะห์ที่แม่นยำ มันยากนะ
Raphael

O(CยูอีRโอโอเสื้อ(n))

12

ขึ้นอยู่กับวินัยที่คุณมี ดังที่ Jeremy States มีทฤษฎีและการปฏิบัติที่แตกต่างกันออกไป

หัวข้อเช่นความซับซ้อนมีแนวโน้มที่จะถูกถ่วงน้ำหนักทางด้านทฤษฎีบ่อยครั้งที่เป้าหมายคือการหาขอบเขตสำหรับพื้นที่หรือรันไทม์ การนำอัลกอริธึมมาใช้ใน C ++ แล้วเรียกใช้หลายครั้งจะไม่สามารถพิสูจน์ได้ว่าปัญหานั้นเกิดจากปัญหา NP-complete

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

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


10

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

แต่เราสามารถพูดได้ไหมว่าโครงสร้างการเขียนโปรแกรมถือเป็นการพัฒนาด้านวิทยาศาสตร์การเขียนโปรแกรมล่วงหน้า เราสามารถพูดได้ไหมว่ามันทำให้โปรแกรมการเขียนง่ายขึ้น? เราสามารถพูดได้ไหมว่ามันทำให้ภาษาโปรแกรมดีขึ้นหรือไม่

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


7

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

MP3ใช้Psychoacousticเพื่อปรับแต่งอัลกอริทึมสำหรับการเข้ารหัสของมนุษย์

π

ในบรรทัดเดียวกัน Bailey และ Borwein เป็นผู้สนับสนุนหลักของการทดลองทางคณิตศาสตร์ ดู"คอมพิวเตอร์เป็นเบ้าหลอม: บทนำทดลองคณิตศาสตร์" , "การคำนวณทัศนศึกษาในทฤษฎีจำนวน"ในหมู่คนอื่น ๆ บางคนอาจแย้งว่านี่เป็นคณิตศาสตร์เชิงทดลองมากกว่าแต่ฉันขอเถียงว่าในระดับนี้การอภิปรายความแตกต่างนั้นมีความหมาย

การเปลี่ยนเฟสของปัญหา NP-Complete เป็นอีกพื้นที่หนึ่งที่ใช้ผลลัพธ์เชิงประจักษ์อย่างหนัก ดูMonasson, Zecchina, Kirkpatrick, Selman และ TroyanskyและGent และ Walsh สำหรับผู้เริ่มต้นแม้ว่าจะมีอีกมากมายอีกมากมาย (ดูที่นี่สำหรับแบบสำรวจสั้น ๆ )

แม้ว่าจะไม่ได้มากในระดับของทฤษฎีวิทยาศาสตร์คอมพิวเตอร์หรือคณิตศาสตร์ที่มีการอภิปรายที่นี่เกี่ยวกับวิธีการที่ยูทิลิตี้ grep ของยูนิกซ์เฉลี่ยเต้นกรณีรันไทม์การเพิ่มประสิทธิภาพขั้นตอนวิธีการในกรณีที่เลวร้ายที่สุดเพราะมันอาศัยอยู่กับความเป็นจริงที่ว่ามันค้นหาข้อความที่อ่านได้ของมนุษย์ (grep ไม่เป็นไม่ดีหรือ แย่ที่สุดในไฟล์ที่มีตัวอักษรแบบสุ่ม)

แม้แต่เกาส์ก็ใช้หลักฐานเชิงทดลองเพื่อตั้งสมมุติฐานทฤษฎีบทจำนวนเฉพาะ

การขุดข้อมูล ( โซลูชันของ Bellkorต่อNetflix Prizeเพื่อสร้างระบบการแนะนำที่ดีกว่า) อาจถูกโต้แย้งว่าเป็นทฤษฎีอย่างสมบูรณ์ตามหลักฐานเชิงประจักษ์ ปัญญาประดิษฐ์ (อัลกอริธึมทางพันธุกรรมเครือข่ายประสาทเทียม ฯลฯ ) อาศัยการทดลองอย่างมาก การเข้ารหัสอยู่ในการผลักและดึงอย่างต่อเนื่องระหว่างผู้สร้างรหัสและตัวแบ่งรหัส ฉันตั้งชื่อเพียงไม่กี่อย่างและถ้าคุณผ่อนคลายคำจำกัดความเชิงประจักษ์คุณก็สามารถสร้างเครือข่ายที่กว้างขึ้นได้

คำขอโทษของฉันที่กระจัดกระจายในการตอบคำถามของคุณ แต่ฉันหวังว่าอย่างน้อยฉันก็มีตัวอย่างที่เป็นประโยชน์

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