สิ่งที่ใช้เป็นกลุ่ม, monoids, และเสียงเรียกเข้าในการคำนวณฐานข้อมูล?


38

ทำไม บริษัท เช่น Twitter ถึงสนใจในแนวคิดเกี่ยวกับพีชคณิตเช่นกลุ่ม, monoids และ ring? ดูพื้นที่เก็บข้อมูลของพวกเขาที่GitHub: Twitter / algebird

สิ่งที่ฉันหาได้คือ:

การดําเนินการของ Monoids สำหรับขั้นตอนวิธีการประมาณที่น่าสนใจเช่นกรองบลูม , HyperLogLogและCountMinSketch สิ่งเหล่านี้ช่วยให้คุณคิดถึงการดำเนินการที่ซับซ้อนเหล่านี้เช่นคุณอาจใช้ตัวเลขและเพิ่มพวกมันใน hadoop หรือออนไลน์เพื่อสร้างสถิติและการวิเคราะห์ที่มีประสิทธิภาพ

และอีกส่วนหนึ่งของหน้า GitHub:

มันได้รับการพัฒนามาเป็นส่วนหนึ่งของลวกของเมทริกซ์ API ที่เมทริกซ์มีค่าซึ่งเป็นองค์ประกอบของ Monoids , กลุ่มหรือแหวน ต่อจากนั้นเป็นที่ชัดเจนว่ารหัสมีแอปพลิเคชันที่กว้างขึ้นภายใน Scalding และโครงการอื่น ๆ ภายใน Twitter

แอปพลิเคชันที่กว้างขึ้นนี้จะเป็นอย่างไร ภายใน Twitter และเพื่อความสนใจทั่วไป


ดูเหมือนว่าการรวมองค์ประกอบของฐานข้อมูลจะมีโครงสร้างคล้าย monoid

คำถามเดียวกันเกี่ยวกับ Quora: อะไรคือความสนใจของ Twitter ในพีชคณิตนามธรรม (กับ algebird)?


ฉันมีพื้นฐานทางคณิตศาสตร์ แต่ฉันไม่ใช่นักวิทยาศาสตร์คอมพิวเตอร์ มันจะเป็นการดีหากมีการใช้ "โลกแห่งความเป็นจริง" ในการใช้ monoids และ semi-group โดยทั่วไปแล้วสิ่งเหล่านี้ถูกพิจารณาว่าเป็นสิ่งก่อสร้างเชิงทฤษฎีที่ไร้ประโยชน์และไม่สนใจในวิชาพีชคณิตนามธรรมจำนวนมาก (เพราะไม่มีอะไรน่าสนใจที่จะพูด)


1
ผมพบว่าบทความนี้มีความสุขที่รัก HackerNews news.ycombinator.com/item?id=5196708 "พีชคณิตประเภทพีชคณิตข้อมูล"
จอห์น Mangual

ตกลงพบว่ามันน่าแปลกใจทวิตเตอร์คิดในบริเวณเหล่านี้มันค่อนข้างเป็นนามธรรม แนวคิดหลักดูเหมือนจะเป็นส่วนประกอบที่สามารถนำมาใช้ซ้ำได้สำหรับระบบที่เหมือน Mapreduce algebird ดูเหมือนว่าจะ "แยกตัว" ออกจากการลวก ริการพูดคุยเกี่ยวกับการลวก อย่างไรก็ตามมันไม่ได้พูดถึงวัตถุพีชคณิต อาจเป็นไปได้ว่าพวกเขาจะสามารถใช้เป็นวัตถุข้อมูลพื้นฐาน / ประเภทสำหรับการจัดการใน dataflows ซึ่งยังถูกแมปในรูปแบบการเขียนโปรแกรมฟังก์ชั่น ....
vzn

การแลกเปลี่ยนสั้น ๆ กับผู้เขียนลวกในalgebirdห้องสมุดของเขาบน Twitter: twitter.com/posco/status/300692719561482240
john mangual

2
ฉันขอโต้แย้งข้อโต้แย้งที่ว่า monoids และ semi-group ได้รับการพิจารณาว่า 'สร้างทฤษฎีไร้ประโยชน์' เนื่องจากทั้งสองมีประโยชน์ใช้สอยค่อนข้างน้อยในวิชาคณิตศาสตร์เช่นกันทั้งในหมวดหมู่ทฤษฎีและสำหรับการสร้างแบบจำลองโครงสร้างพีชคณิตอื่น ๆ คุณคิดว่าสาขาวิชาคณิตศาสตร์ประเภทใดที่ถือว่าไร้ประโยชน์ของกลุ่มย่อย
Steven Stadnicki

บางทีmonoid เชิงไวยากรณ์ของภาษาทางการมีความเกี่ยวข้องแม้ว่ามันจะไม่ได้กล่าวถึงในคำตอบ แม้ว่าฉันคาดหวังเช่นเดียวกับคำตอบมากมายว่ามันเกี่ยวข้องกับการคำนวณโดยทั่วไปมากกว่าการคำนวณฐานข้อมูล
PJTraill

คำตอบ:


27

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

ด้วยการใช้ Monoids เราสามารถใช้ประโยชน์จาก sparsity (เราจัดการกับเมทริกซ์กระจัดกระจายจำนวนมากซึ่งค่าเกือบทั้งหมดเป็นศูนย์ใน Monoid บางตัว)

ด้วยการใช้ Rings เราสามารถทำการคูณเมทริกซ์กับสิ่งอื่นที่ไม่ใช่ตัวเลข (ซึ่งในบางครั้งเราได้ทำ)

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

แก้ไขปัญหาของระบบเพียงครั้งเดียวสำหรับ Semigroup / Monoid / Group / Ring จากนั้นคุณสามารถเสียบอัลกอริทึมใด ๆ โดยไม่ต้องคิดถึง Memcache, Hadoop, Storm, etc ...


4
บางคนสามารถขยายลิงก์ระหว่างเมทริกซ์กระจัดกระจายและศูนย์ใน Monoid บางตัวได้หรือไม่
vzn

ลิงก์ไปยังตัวอย่างหรือการอ่านเพิ่มเติมนั้นน่าจะดีจริงๆ
Erik Allik

11

Monoids เป็นที่แพร่หลายในการเขียนโปรแกรมเพียงว่าโปรแกรมเมอร์ส่วนใหญ่ไม่รู้จักพวกเขา

  • การดำเนินการตัวเลขเช่นการบวกและการคูณ
  • การคูณเมทริกซ์
  • โดยพื้นฐานแล้วโครงสร้างข้อมูลที่มีลักษณะคล้ายคอลเลกชันทั้งหมดจะก่อตัวเป็น monoids ซึ่งการดำเนินการ monoidal เป็นการต่อข้อมูล ซึ่งรวมถึงรายการชุดแผนที่ของกุญแจสู่ค่าต้นไม้ชนิดต่าง ๆ เป็นต้น
  • สำหรับชนิดให้ฟังก์ชั่นพร้อมกับฟังก์ชั่นตัวตนบนรูปแบบ's หนังสือ endomorphismAAAAA

การดำเนินการอื่น ๆ บางอย่างไม่ก่อให้เกิด monoids แต่เป็นกลุ่มกึ่ง ตัวอย่างที่ดีคือการค้นหาองค์ประกอบขั้นต่ำขององค์ประกอบ:หมายถึงขั้นต่ำของและ wrt การสั่งซื้อที่กำหนดabab

เพราะ monoids ทั่วไปดังนั้นพวกเขาจึงอนุญาตให้เขียนฟังก์ชั่นทั่วไปมาก ตัวอย่างเช่นการพับทับโครงสร้างข้อมูลสามารถแสดงเป็นการแมปทุกองค์ประกอบของมันไปที่ monoid แล้วใช้การดำเนินการ monoidal เพื่อรวมพวกมันเข้ากับผลลัพธ์เดียว

อีกตัวอย่างที่ดีและทั่วไปมากก็คือการทำให้การยกกำลังโดยการยกกำลัง monoid (หรือ semi-group) เราสามารถเขียนฟังก์ชันเดียวที่คำนวณเดียวในการดำเนินงาน นำไปใช้กับ monoids ต่าง ๆ ที่เราได้รับ:aantimesO(logn)

  • การยกกำลังตัวเลขอย่างรวดเร็ว
  • การยกกำลังอย่างรวดเร็วของเมทริกซ์ (สามารถใช้เพื่อคำนวณตัวเลขฟีโบนักชีในการคูณ );O(logn)
  • วิธีการที่รวดเร็วสำหรับการสร้างขนาดใหญ่ต้นไม้นิ้วเป็นผนวกองค์ประกอบหนึ่งจะใช้เวลาเวลา แต่การผสาน 2 ต้นไม้ใช้เวลาn_2)))O(1)O(log(min(n1,n2)))
  • เป็นต้น

สำหรับตัวอย่างเพิ่มเติมโปรดดูตัวอย่างของ monoids / semigroups ในการเขียนโปรแกรม


7

ปัญหาสำคัญอย่างหนึ่งในระบบไฟล์แบบกระจาย ( DFS ) คือการสร้างไฟล์จากบล็อกแบบกระจาย พื้นที่ของรหัสลบข้อมูลจากทฤษฎีข้อมูลและพีชคณิต (กลุ่ม, แหวน, พีชคณิตเชิงเส้น, ... ) มีการใช้อย่างกว้างขวางในระบบไฟล์ที่ทนต่อความผิดพลาดแบบกระจายตัวอย่างเช่นในHDFS RAID (Hadoop Based File System) บริษัท โซเชียลเน็ตเวิร์กและคลาวด์นั้นใช้ DFS ดังนั้นพวกเขาจึงต้องการคนที่เชี่ยวชาญในพีชคณิตและรหัสลบออกเพื่อออกแบบระบบที่ดีขึ้นและมีประสิทธิภาพสูง (เช่นรหัสReed-Solomonเป็นต้น)

นี่เป็นโปสเตอร์ที่ดีสำหรับการใช้งาน (พีชคณิต) ในที่จัดเก็บข้อมูลบนคลาวด์: รหัสนวนิยายสำหรับที่เก็บข้อมูลบนคลาวด์


6

หากคำถามของคุณคือ

ตัวอย่างของกลุ่ม monoids และ ring ในการคำนวณคืออะไร

จากนั้นตัวอย่างหนึ่งที่ฉันนึกออกคือสำหรับอัลกอริธึมการค้นหาเส้นทางในทฤษฎีกราฟ หากเรากำหนดsemiringด้วยเป็นและเป็นจากนั้นเราสามารถใช้การคูณเมทริกซ์กับเมทริกซ์ adjacency เพื่อหา all-pairs-shortest-path วิธีนี้มีการอธิบายใน CLRS+min+

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


1
ใช่และเราได้เพิ่ม minplus เพื่อทำเช่นนั้น: github.com/twitter/algebird/blob/develop/algebird-core/src/main/ …
Oscar Boykin

4

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

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


3

ฉันมีพื้นฐานทางคณิตศาสตร์ แต่ฉันไม่ใช่นักวิทยาศาสตร์คอมพิวเตอร์ มันจะเป็นการดีหากมีการใช้ "โลกแห่งความเป็นจริง" ในการใช้ monoids และ semi-group โดยทั่วไปแล้วสิ่งเหล่านี้ถูกพิจารณาว่าเป็นสิ่งก่อสร้างเชิงทฤษฎีที่ไร้ประโยชน์และไม่สนใจในวิชาพีชคณิตนามธรรมจำนวนมาก (เพราะไม่มีอะไรน่าสนใจที่จะพูด)

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

  • กลุ่มย่อยแน่นอนและทฤษฎี Krohn-Rhodes
  • สมมาตรบางส่วน, semigroup ผกผัน, groupoids และผลึก
  • semirings และเรขาคณิตเขตร้อน
  • คำสั่งบางส่วนและฟังก์ชั่นMöbius
  • ฟังก์ชั่น submodular และการสลายตัว (Dulmage-Mendelsohn like)

ฉันรู้มากเกี่ยวกับแต่ละหัวข้อเหล่านี้หรือไม่ อาจจะไม่. นอกจากนี้ยังมีหัวข้อทางคณิตศาสตร์อื่น ๆ อีกมากมายที่เกี่ยวข้องกับ monoids และ semigroups บางคนอยู่ในทฤษฎี semigroup ภายในตัวเอง (เช่นความสัมพันธ์ของสีเขียว), อื่น ๆ ทั่วไปมากขึ้นและไม่เฉพาะเจาะจงกับ semigroups (semigroups สากล homomorphism และทฤษฎีมอร์ฟ congruences) แต่ก็มีความสำคัญจากมุมมองทางคณิตศาสตร์ หัวข้อที่ฉันอ้างถึงข้างต้นส่วนใหญ่มีแอปพลิเคชัน "โลกแห่งความจริง" แต่มีหัวข้อที่เกี่ยวข้องเพิ่มเติมที่มีแอปพลิเคชัน "โลกแห่งความจริง" ด้วย


ด้านบนไม่ใช่คำตอบสำหรับคำถามจริง แต่เพียงกล่าวถึง "... โดยปกติแล้วจะถือว่าเป็นการสร้างเชิงทฤษฎีที่ไร้ประโยชน์ ... เพราะไม่มีอะไรน่าสนใจที่จะพูด ... " ดังนั้นฉันจึงแสดงรายการคะแนน "น่าสนใจ" ที่อ้างว่าส่วนใหญ่มีแอปพลิเคชัน "โลกแห่งความจริง" และตอนนี้ Hi-Angel ขอข้อมูลเกี่ยวกับแอปพลิเคชันเหล่านั้นเล็กน้อย แต่เนื่องจาก "มีความน่าสนใจมากเกินไปที่จะพูด" อย่าคาดหวังมากเกินไปจากข้อมูลนั้น: ทฤษฎีบท Krohn-Rhodesเป็นทฤษฎีการสลายตัวสำหรับกลุ่มย่อยที่แน่นอน แอพพลิเคชั่นนี้เกี่ยวข้องกับการแปลความหมายของผลิตภัณฑ์พวงหรีดในรูปแบบขององค์ประกอบ (ของเครื่องแปลงความถี่) ที่เกี่ยวข้องกับทฤษฎีออโตมาตะและภาษาปกติมาร์คลอว์สัน V: สองบรรยายและพื้นหลังกวดวิชาวัสดุที่มีอยู่ (404 ตอนนี้) วัสดุที่ดีในการผกผัน Semigroups พื้นฐานสำหรับการใช้งานของพวกเขาคือการเชื่อมต่อกับsemigroup ผกผันสมมาตรคือชุดของ bijections บางส่วนทั้งหมดในชุด หนึ่งสามารถเริ่มต้นด้วยลักษณะทางพีชคณิตพื้นฐานของ semigroup ผกผัน แต่วิธีการนี้มีความเสี่ยงที่จะละเลยการเชื่อมต่อกับคำสั่งบางส่วนซึ่งมีความสำคัญสำหรับการใช้งานจำนวนมาก บางวันฉันจะต้องบล็อกเกี่ยวกับแอปพลิเคชันเฉพาะของกลุ่มย่อยอินเวอร์สเป็น "ลำดับชั้น" ที่ใช้ในการบีบอัดเค้าโครงเซมิคอนดักเตอร์. แอปพลิเคชั่นของการบรรยายได้ถูกอธิบายไว้แล้วในคำตอบอื่น ๆ (และเรขาคณิตเขตร้อนจะทำให้เราห่างไกลจากวิทยาศาสตร์คอมพิวเตอร์) เนื่องจาก monoids และ semigroups นั้นเกี่ยวข้องกับคำสั่งบางส่วนด้วยเช่นกันหัวข้อที่ดีเช่นฟังก์ชันMöbiusดังที่อธิบายไว้ในCombinatorics: The Rota Wayก็เกี่ยวข้องกันเช่นกัน และจากนั้นหัวข้อจากเมทริกซ์และ Matroids สำหรับการวิเคราะห์ระบบเช่นการสลายตัวของ Dulmage-Mendelsohnกลายเป็นเรื่องที่เกี่ยวข้องซึ่งเป็นหนึ่งในแรงจูงใจของฉันในการศึกษาทฤษฎีโครงตาข่าย (และโครงสร้างลำดับชั้นที่ซ่อนอยู่)


ไม่ใช่ว่าฉันกำลังบ่น แต่ฉันคิดว่าถ้าคุณจะเพิ่มข้อมูลเล็กน้อยเกี่ยวกับแอปพลิเคชันในชีวิตจริงของรายการที่ระบุไว้คุณจะมีผู้โหวตมากขึ้น
Hi-Angel

1
@ Hi-Angel สิ่งที่กล่าวมาข้างต้นไม่ใช่คำตอบสำหรับคำถามจริง แต่เพียงกล่าวถึง "... ทฤษฎีที่ไร้ประโยชน์ ... ขาดสิ่งที่น่าสนใจที่จะพูด ... " มันบอกเป็นนัยว่าฉันอาจไม่ใช่บุคคลที่มีคุณสมบัติเหมาะสมที่สุดในการจัดการเรื่องนี้: "ฉันรู้มากเกี่ยวกับแต่ละหัวข้อเหล่านี้หรือไม่อาจเป็นไปไม่ได้" โพสต์ที่ได้รับคะแนนสูงสุดของฉันอยู่ในหมวดหมู่เดียวกัน Benjamin Steinberg เรียกบริเวณนี้ว่า "เป็นพิษ"และเขาก็จะมีคุณสมบัติที่จะ "ตอบ" ...
โธมัสคลิมเพล
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.