Toán nói: Định lý về hệ thống kiểm soát sửa đổi git?


19

Tôi muốn có một bài nói chuyện toán học trên hệ thống kiểm soát sửa đổi git . Bây giờ nó được sử dụng rộng rãi trong toán học cũng như trong ngành khoa học máy tính. Ví dụ, cộng đồng HoTT (Homotopy Type Theory) sử dụng nó và đây là hệ thống để chỉnh sửa cộng tác các tệp văn bản, cho dù chúng là mã nguồn hoặc đánh dấu latex.

Tôi biết git sử dụng khái niệm đồ thị theo chu kỳ có hướng, đó là một sự khởi đầu. Tuy nhiên, một bài nói chuyện toán học tốt đề cập đến bằng chứng và định lý.

Định lý nào tôi có thể chứng minh về git thực sự phù hợp với việc sử dụng nó?


1
Chủ yếu, động lực của tôi là chứng minh rằng các khái niệm toán học được áp dụng bằng cách sử dụng git làm ví dụ. Thứ hai, git khá hữu ích trong thế giới toán học, cũng như trong thế giới CS, vì vậy khán giả của tôi cũng có thể tìm hiểu những gì nó làm và tại sao người ta có thể sử dụng nó.
ThoralfSkolem

2
@RexButler - git rất hữu ích trong toán học giống như cách sử dụng bút chì. Đó là một công cụ chung mà một số nhà toán học tình cờ sử dụng.
Thưởng thức

1
Câu hỏi này làm tôi nhớ đến "Hướng dẫn về GIT bằng cách sử dụng các phép tương tự không gian" (liên kết đến Wayback Machine vì trang web dường như ngừng hoạt động ngay bây giờ).
song mã


1
câu hỏi tương tự gần đây đã xuất hiện trên Khoa học máy tính : CS chính thức của VCS và các phiên bản tệp
vzn

Câu trả lời:


16

Một kho lưu trữ git có thể được coi là một tập hợp các bản sửa đổi được sắp xếp một phần (trong đó một bản sửa đổi sớm hơn bản sửa đổi theo thứ tự nếu nó là bản kế thừa trực tiếp hoặc gián tiếp của bản sửa đổi trước đó). Các đơn đặt hàng một phần mà bạn nhận được từ kho git có xu hướng có chiều rộng thấp (kích thước của tập hợp các bản sửa đổi độc lập lẫn nhau lớn nhất) vì chiều rộng có liên quan trực tiếp đến số lượng nhà phát triển hoạt động và số lượng các nhánh khác nhau mà bất kỳ nhà phát triển riêng lẻ nào cũng có thể làm việc trên.

Dựa trên nền tảng này, tôi sẽ đề xuất định lý của Dilworth , trong đó nêu rõ rằng độ rộng của bất kỳ thứ tự từng phần nào bằng với số chuỗi tối thiểu (các tập con hoàn toàn được đặt hàng) cần thiết để bao gồm tất cả các phiên bản. Và để làm cho nó trở thành chủ đề cho bảng này, bạn cũng có thể đề cập đến các thuật toán dựa trên đồ thị phù hợp để tính toán độ rộng và tìm độ che phủ của một số chuỗi tối thiểu trong thời gian đa thức.

Một cách mà điều này có thể phù hợp để sử dụng thực tế trong Git là trong một hệ thống trực quan hóa lịch sử phiên bản của một hệ thống: hầu hết các hệ thống trực quan hóa Git mà tôi đã thấy thời gian trên trục dọc và các phiên bản độc lập của kho lưu trữ theo chiều ngang, vì vậy, điều này sẽ cung cấp cho bạn một cách để tổ chức trực quan hóa thành một số lượng nhỏ các rãnh dọc độc lập.

Ngoài ra, nếu bạn muốn một cái gì đó tham vọng và nâng cao hơn, hãy thử cấu trúc dữ liệu cây đổ lỗi của Demaine và cộng sự , được thúc đẩy trực tiếp bởi giải quyết xung đột trong các hệ thống kiểm soát phiên bản giống như git.


17

Thật thú vị, có một phép toán hóa sơ khai của các hệ thống kiểm soát phiên bản, mặc dù tại thời điểm này, nó chỉ áp dụng một phần cho Git. Nó được gọi là lý thuyết vá [1, 2, 3, 4, 5] và phát sinh trong bối cảnh của hệ thống kiểm soát phiên bản DARCS. Nó có thể được coi là một lý thuyết trừu tượng của sự phân nhánhsáp nhập . Gần đây lý thuyết vá đã được đưa ra phương pháp điều trị HoTT [6] và phân loại [7].

Lý thuyết bản vá đang được tiến hành và không bao gồm tất cả các khía cạnh của kiểm soát phiên bản, nhưng chứa rất nhiều định lý mà bạn có thể xem xét. Đó là một ví dụ rõ ràng về lý thuyết áp dụng cho 'thế giới thực' - không đáng ngạc nhiên, vì lý thuyết vá là một sự trừu tượng hóa / đơn giản hóa một cái gì đó rất cụ thể. Đồng thời nó kết nối với các toán học tiên tiến như HoTT.


  1. J. Dagit, Thay đổi đúng loại - Cách tiếp cận an toàn để thực hiện kiểm soát phiên bản .
  2. G. Sittampalam, Một số tính chất của lý thuyết vá darcs .
  3. I. Lynagh, Lý thuyết đường dẫn trại.
  4. D. Roundy, Thực hiện các bản vá chính thức của darcs ... và xác minh nó.
  5. J. Jacobson, Một hình thức hóa lý thuyết vá Darcs bằng cách sử dụng các nhóm bán đảo ngược .
  6. C. Angiuli, E. Morehouse, DR Licata, R. Harper, Lý thuyết vá đồng tính .
  7. S. Mimram, C. Di Giusto, Một lý thuyết phân loại của các bản vá lỗi .

4

Một cách khác là xem xét các cấu trúc dữ liệu liên tục (hoặc hoàn toàn chức năng). Cấu trúc dữ liệu nội bộ của Git có thể được xem như một cây liên tục :

cấu trúc dữ liệu liên tục là cấu trúc dữ liệu luôn bảo tồn phiên bản trước đó của chính nó khi nó được sửa đổi. Các cấu trúc dữ liệu như vậy là bất biến một cách hiệu quả, vì các hoạt động của chúng không (rõ ràng) cập nhật cấu trúc tại chỗ, mà thay vào đó luôn mang lại một cấu trúc cập nhật mới.

Cấu trúc dữ liệu vẫn tồn tại một phần nếu tất cả các phiên bản có thể được truy cập nhưng chỉ có thể sửa đổi phiên bản mới nhất. Cấu trúc dữ liệu hoàn toàn bền vững nếu mọi phiên bản có thể được truy cập và sửa đổi. Nếu cũng có một hoạt động kết hợp hoặc hợp nhất có thể tạo ra một phiên bản mới từ hai phiên bản trước, cấu trúc dữ liệu được gọi là liên tục liên tục.

Câu hỏi này cũng có liên quan.


1

Có, bạn có thể xác định một cách toán học cách Git hoạt động. Bạn có thể định nghĩa các cấu trúc Git nguyên thủy và các thao tác Git trên chúng và sau đó có các định lý chứng minh rằng sử dụng các thao tác này theo những cách cụ thể đạt được các mục tiêu cấp cao hơn cụ thể hoặc cố gắng mô tả hoặc định lượng các tình huống trong trường hợp này không phải là trường hợp. (Ví dụ, sự phụ thuộc vào băm của Git để lại một sai số nhỏ.)

Một ý tưởng khác là làm điều tương tự cho Subversion, sau đó đưa ra các định lý so sánh hai. Ví dụ, người ta thường tuyên bố rằng Git tốt hơn trong việc xử lý các sự hợp nhất; bạn có thể có những định lý chứng minh điều này, định tính hoặc định lượng.

Sự hữu ích sẽ cực kỳ phụ thuộc vào việc tạo ra sự trừu tượng đúng đắn. Về mặt toán học mô tả hoạt động của mã nguồn Git một cách chi tiết là vô nghĩa: chính mã nguồn thực hiện điều đó hiệu quả và chính xác hơn nhiều.

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.