Những gì sử dụng là nhóm, đơn sắc và vòng trong tính toán cơ sở dữ liệu?


38

Tại sao một công ty như Twitter sẽ quan tâm đến các khái niệm đại số như các nhóm, đơn sắc và nhẫn? Xem kho lưu trữ của họ tại github: twitter / aloltird .

Tất cả những gì tôi có thể tìm thấy là:

Việc triển khai Monoids cho các thuật toán xấp xỉ thú vị, chẳng hạn như bộ lọc Bloom , HyperLogLogCountMinSketch . Điều này cho phép bạn nghĩ về các hoạt động tinh vi như bạn có thể đánh số và thêm chúng vào hadoop hoặc trực tuyến để tạo ra số liệu thống kê và phân tích mạnh mẽ.

và trong một phần khác của trang GitHub:

Ban đầu nó được phát triển như một phần của API Ma trận của Scalding, trong đó Ma trận có các giá trị là các thành phần của Đơn sắc , Nhóm hoặc Nhẫn . Sau đó, rõ ràng là mã có ứng dụng rộng hơn trong phạm vi mở rộng và trên các dự án khác trong Twitter.

Ứng dụng rộng hơn này có thể là gì? trong Twitter và vì lợi ích chung?


Có vẻ như tập hợp thành phần của cơ sở dữ liệu có cấu trúc giống như đơn hình.

Câu hỏi tương tự trên Quora: Twitter quan tâm đến đại số trừu tượng (với đại số) là gì?


Tôi có nền tảng toán học nhưng tôi không phải là nhà khoa học máy tính. Sẽ thật tuyệt vời khi sử dụng "thế giới thực" của các đơn âm và bán nhóm. Đây thường được coi là các cấu trúc lý thuyết vô dụng, và bị bỏ qua trong nhiều khóa học đại số trừu tượng (vì không có gì thú vị để nói).


1
Tôi tìm thấy bài viết hay này hon HackerNews news.ycombinator.com/item?id=5196708 "Đại số các loại dữ liệu đại số"
john mangual

đồng ý, tìm thấy nó đáng ngạc nhiên twitter đang lẩn quẩn trong các lĩnh vực này, nó khá trừu tượng. ý tưởng chính dường như là các thành phần có thể tái sử dụng cho một hệ thống giống như Mapreduce. aloltird dường như đã "tách ra" khỏi việc nhân rộng. heres một cuộc nói chuyện về bỏng . tuy nhiên nó không đề cập đến các đối tượng đại số. có lẽ chúng có thể được sử dụng làm nguyên thủy / loại đối tượng dữ liệu để thao tác trong các cơ sở dữ liệu, cũng được ánh xạ vào kiểu lập trình chức năng ....
vzn

Một cuộc trao đổi ngắn với tác giả của việc thu nhỏ trên algebirdthư viện của mình , trên Twitter: twitter.com/poseco/status/300692719561482240
john mangual

2
Tôi chắc chắn sẽ tranh cãi rằng các đơn sắc và bán nhóm đều được coi là "cấu trúc lý thuyết vô dụng", vì cả hai đều có khá nhiều tiện ích trong chính toán học, cả về lý thuyết thể loại và để mô hình hóa các cấu trúc đại số khác nhau. Chi nhánh toán học nào bạn đến từ đó coi các nhóm bán kết là 'vô dụng'?
Steven Stadnicki

Có lẽ cú pháp đơn điệu của một ngôn ngữ chính thức có liên quan, mặc dù nó không được đề cập trong các câu trả lời. Mặc dù tôi mong đợi, giống như nhiều câu trả lời, rằng nó có liên quan đến tính toán nói chung hơn là tính toán cơ sở dữ liệu.
PJTraill

Câu trả lời:


27

Câu trả lời chính là bằng cách khai thác cấu trúc bán nhóm, chúng ta có thể xây dựng các hệ thống song song chính xác mà không cần biết hoạt động cơ bản (người dùng đang hứa hẹn khả năng kết hợp).

Bằng cách sử dụng Monoids, chúng ta có thể tận dụng độ thưa thớt (chúng ta xử lý rất nhiều ma trận thưa thớt, trong đó hầu như tất cả các giá trị đều bằng 0 trong một số Monoid).

Bằng cách sử dụng Nhẫn, chúng ta có thể thực hiện phép nhân ma trận đối với những thứ khác ngoài số (mà đôi khi chúng ta đã thực hiện).

Bản thân dự án aloltird (cũng như lịch sử vấn đề) giải thích khá rõ ràng những gì đang diễn ra ở đây: chúng tôi đang xây dựng rất nhiều thuật toán để tổng hợp các tập dữ liệu lớn và tận dụng cấu trúc của các hoạt động giúp chúng tôi giành chiến thắng về phía hệ thống (thường là điểm đau khi cố gắng sản xuất thuật toán trên 1000 nút).

Giải quyết các vấn đề hệ thống một lần cho bất kỳ Semigroup / Monoid / Group / Ring, và sau đó bạn có thể cắm bất kỳ thuật toán nào mà không phải suy nghĩ về Memcache, Hadoop, Storm, v.v ...


4
ai đó có thể mở rộng liên kết giữa ma trận thưa thớt & số không trong một số Monoid không?
vzn

một vài liên kết đến các ví dụ hoặc đọc thêm sẽ thực sự tốt đẹp
Erik Allik

11

Monoids có mặt khắp nơi trong lập trình, chỉ là hầu hết các lập trình viên không biết về chúng.

  • Số hoạt động như cộng và nhân.
  • Phép nhân ma trận.
  • Về cơ bản tất cả các cấu trúc dữ liệu giống như bộ sưu tập tạo thành các đơn sắc, trong đó hoạt động đơn hình là nối hoặc liên kết. Điều này bao gồm danh sách, bộ, bản đồ các khóa cho các giá trị, các loại cây khác nhau, v.v.
  • Đối với một loại nhất định chức năng cùng với chức năng nhận dạng trên hình thức 's monoid tự đồng cấu.A A A AAAAAA

Một số hoạt động khác không tạo thành đơn sắc mà là bán nhóm. Một ví dụ điển hình là tìm kiếm phần tử tối thiểu của một chuỗi các phần tử: đại diện cho mức tối thiểu của và wrt một số thứ tự đã cho.a babab

Bởi vì các đơn sắc rất chung chung, chúng cho phép viết các hàm rất chung chung. Ví dụ, việc gấp trên một cấu trúc dữ liệu có thể được biểu thị dưới dạng ánh xạ mọi phần tử của nó thành một hình đơn sắc và sau đó sử dụng phép toán đơn hình để kết hợp chúng với một kết quả duy nhất.

Một ví dụ hay và rất chung chung khác là khái quát hóa lũy thừa bằng cách bình phương thành đơn sắc (hoặc bán nhóm). Chúng ta có thể viết một hàm duy nhất tính toán chỉ trong các hoạt động . Áp dụng nó cho các đơn sắc khác nhau, chúng tôi nhận được: O(logn)aantimesO(logn)

  • cấp số nhân nhanh chóng;
  • lũy thừa nhanh chóng của ma trận (điều này có thể được sử dụng để tính số Fibonacci trong phép nhân);O(logn)
  • phương pháp nhanh để xây dựng cây ngón tay lớn , vì việc nối thêm một phần tử mất thời gian nhưng việc hợp nhất 2 cây sẽ mất .O(1)O(log(min(n1,n2)))
  • v.v.

Để biết thêm ví dụ, xem Ví dụ về các đơn âm / nửa nhóm trong lập trình .


7

Một vấn đề quan trọng trong hệ thống tệp phân tán ( DFS ) là tạo tệp từ các khối phân tán. Vùng mã Erasure từ lý thuyết thông tin và Đại số (nhóm, vòng, đại số tuyến tính, ...) được sử dụng rộng rãi trong các hệ thống tệp chịu lỗi phân tán, ví dụ như trong HDFS RAID (Hệ thống tệp dựa trên Hadoop). Mạng xã hội và các công ty Đám mây dựa trên DFS rộng rãi, vì vậy họ cần những người thành thạo về Đại số và Mã xóa để thiết kế các hệ thống hiệu suất cao và tốt hơn (như mã Reed-Solomon , v.v.).

Đây cũng là poster tốt cho ứng dụng của họ (đại số) trong lưu trữ đám mây: Mã Novel cho Lưu trữ đám mây


6

Nếu câu hỏi của bạn là

Các ví dụ về các nhóm, đơn sắc và vòng trong tính toán là gì?

sau đó, một ví dụ tôi có thể nghĩ về off-hand là dành cho các thuật toán tìm đường trong lý thuyết đồ thị. Nếu chúng ta xác định một nửa cung với as và là , thì chúng ta có thể sử dụng phép nhân ma trận với ma trận kề để tìm đường dẫn tất cả các cặp ngắn nhất. Phương pháp này thực sự được mô tả trong CLRS.phút ++min+

Mặc dù điều này có vẻ chỉ là lý thuyết từ góc độ đại số, nó cho phép chúng ta sử dụng các thư viện đại số tuyến tính được tối ưu hóa rất nhiều cho các vấn đề đồ thị. Combinatorial BLAS là một trong những thư viện như vậy.


1
Đúng, và chúng tôi đã thêm minplus để làm điều đó: github.com/twitter/aloltird/blob/develop/aloltird-core/src/main/ Lỗi
Oscar Boykin

4

Tập hợp tất cả các từ trên một số bảng chữ cái hữu hạn cùng với ghép nối tạo thành từ đơn miễn phí . Do đó, toàn bộ lĩnh vực của ngôn ngữ chính thức có thể được xem qua ống kính đại số, và đôi khi nó được dạy như thế này.(Σ,)

Đổi lại, xem xét về ngôn ngữ chính thức đã mang lại những phân tích cú pháp Earley có thể được mở rộng để phân tích trên semirings . Điều này rất hữu ích trong xử lý ngôn ngữ tự nhiên và các lĩnh vực khác bằng cách sử dụng các mô hình ngẫu nhiên cho các ngôn ngữ (chính thức).


3

Tôi có nền tảng toán học nhưng tôi không phải là nhà khoa học máy tính. Sẽ thật tuyệt vời khi sử dụng "thế giới thực" của các đơn âm và bán nhóm. Đây thường được coi là các cấu trúc lý thuyết vô dụng, và bị bỏ qua trong nhiều khóa học đại số trừu tượng (vì không có gì thú vị để nói).

Có quá nhiều điều thú vị để nói. Tuy nhiên, đó là một chủ đề của toán học và tổ hợp rời rạc hơn là cho đại số trừu tượng và phân tích, ít nhất là cho các chủ đề ít tầm thường hơn. Ngoài ra còn có câu hỏi bạn phải biết bao nhiêu về một chủ đề nhất định trước khi bạn có thể nói với ai đó rằng đó sẽ là một chủ đề toán học thú vị liên quan đến các đơn sắc và nửa nhóm. Ví dụ: tôi thấy các chủ đề sau (liên quan đến nhóm bán kết) thú vị:

  • nửa nhóm hữu hạn và lý thuyết Krohn-Rhodes
  • đối xứng một phần, nửa nhóm nghịch đảo, nhóm và quasicstall
  • semirings và hình học nhiệt đới
  • đơn đặt hàng một phần và chức năng Mobius
  • chức năng mô đun và phân rã (như Dulmage-Mendelsohn)

Tôi có biết nhiều về từng chủ đề này không? Chắc là không. Ngoài ra còn có nhiều chủ đề toán học khác liên quan đến các đơn phân và nửa nhóm, một số trong số chúng có nội dung hơn đối với lý thuyết nửa nhóm (như quan hệ của Green), các chủ đề khác nói chung và không cụ thể đối với các nhóm nửa nhóm (nửa nhóm chung, định lý đồng cấu và định lý đẳng cấu đồng quy), nhưng cũng quan trọng từ quan điểm toán học. Các chủ đề tôi đã trích dẫn ở trên hầu hết có các ứng dụng "thế giới thực", nhưng có nhiều chủ đề liên quan hơn cũng có các ứng dụng "thế giới thực".


Trên đây không phải là một câu trả lời cho câu hỏi thực sự, mà chỉ giải quyết "... thường được coi là các cấu trúc lý thuyết vô dụng ... vì thiếu bất cứ điều gì thú vị để nói ..." nhận xét. Vì vậy, tôi đã liệt kê một số điểm "thú vị", tuyên bố rằng những ứng dụng đó hầu hết có ứng dụng "thế giới thực" và hiện Hi-Angel yêu cầu một chút thông tin về các ứng dụng đó. Nhưng bởi vì "có quá nhiều điều thú vị để nói", đừng kỳ vọng quá nhiều vào thông tin đó: Định lý Krohn-Rhodes là một định lý phân rã cho các nhóm nửa hữu hạn. Các ứng dụng của nó liên quan đến việc giải thích sản phẩm vòng hoa như một loại thành phần (của bộ chuyển đổi) liên quan đến lý thuyết về automata và ngôn ngữ thông thường,Mark V Lawson: hai bài giảng hướng dẫn và tài liệu cơ bản chứa (404 bây giờ) tài liệu tốt về Inverse Semigroups . Cơ sở cho các ứng dụng của họ là kết nối của họ với nửa nhóm đối xứng đối xứng , tức là tập hợp tất cả các phần tử trên một tập hợp. Người ta cũng có thể bắt đầu với các đặc tính đại số cơ bản của các nhóm bán đảo ngược, nhưng cách tiếp cận này có nguy cơ bỏ qua các kết nối với các đơn hàng một phần rất quan trọng đối với nhiều ứng dụng. Một ngày nào đó tôi sẽ phải viết blog về một ứng dụng cụ thể của các nhóm bán đảo ngược là "hệ thống phân cấp" được sử dụng để nén bố cục bán dẫn. Các ứng dụng của semirings đã được mô tả trong các câu trả lời khác (và hình học nhiệt đới sẽ đưa chúng ta đi xa khỏi khoa học máy tính). Bởi vì các đơn sắc và nửa nhóm cũng có liên quan đến các đơn hàng một phần, các chủ đề hay như chức năng Möbius như được mô tả trong Combinatorics: The Rota Way cũng có liên quan. Và sau đó, các chủ đề từ Ma trận và Matroid cho Phân tích hệ thống như phân tách Dulmage-Mendelsohn trở nên có liên quan, đó là một trong những động lực của tôi để nghiên cứu lý thuyết mạng (và các cấu trúc phân cấp ẩn).


Không phải là tôi đang phàn nàn, nhưng tôi nghĩ rằng nếu bạn thêm một chút thông tin về một ứng dụng thực tế của các điểm được liệt kê, bạn sẽ có nhiều sự ủng hộ hơn.
Hi-Angel

1
@ Hi-Angel Trên đây không phải là một câu trả lời cho câu hỏi thực sự, mà chỉ đề cập đến "... cấu trúc lý thuyết vô dụng ... thiếu bất cứ điều gì thú vị để nói ..." bình luận. Nó gợi ý rằng tôi có thể không phải là người đủ điều kiện nhất để giải quyết vấn đề này: "Tôi có biết nhiều về từng chủ đề này không? Có lẽ là không." Bài đăng bình chọn cao nhất của tôi rơi vào cùng loại. Benjamin Steinberg gọi đây là khu vực "độc hại" và anh ta sẽ đủ điều kiện để "trả lời" ...
Thomas Klimpel
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.