数学讲座:关于git版本控制系统的定理?


19

我想对git版本控制系统进行数学演讲。现在,它已广泛用于数学以及计算机科学行业。例如,HoTT(同型类型理论)社区使用它,并且它是用于文本文件的协作编辑的系统,无论它们是源代码还是乳胶标记。

我知道git使用有向无环图的概念,这是一个开始。但是,一个好的数学演讲中提到了证明和定理。

关于git,我可以证明哪些定理实际上与它的使用有关?


1
首先,我的动机是通过使用git作为示例来证明数学概念是适用的。其次,git在数学领域和CS领域一样有用,因此我的听众可能不但会了解它的作用以及为什么会使用它。
ThoralfSkolem 2015年

2
@RexButler-git在数学上很有用,就像铅笔一样。这是一些数学家碰巧使用的通用工具。
Davor

1
这个问题使我想起“使用空间类比的GIT指南”(链接到Wayback Machine,因为该站点现在似乎处于关闭状态)。
duplode 2015年


1
最近在计算机科学上出现了类似的问题:VCS和文件版本的正式CS defn
vzn15年

Answers:


16

git存储库可以看作是部分排序的修订集(如果一个修订版是较早版本的直接或间接后继版本,则该修订版的顺序要早于另一个修订版)。您从git仓库获得的部分订单的宽度通常较小(相互独立修订的最大版本集的大小),因为宽度与活动开发人员的数量以及任何单个开发人员可能正在工作的不同fork的数量直接相关。上。

基于这种背景,我建议采用狄尔沃斯定理,该定理指出,任何部分顺序的宽度等于覆盖所有版本所需的最小链数(全部子集)。为了使该板成为主题,您还可以提及基于图匹配的算法,该算法用于计算宽度并在多项式时间内按最小数量的链找到覆盖。

与Git实际使用有关的一种方式是在一个用于可视化系统版本历史的系统中:我见过的大多数Git可视化系统都在垂直轴上绘制时间,而在水平方向上存储库的独立版本,因此将为您提供一种将可视化组织为少量独立的垂直轨道的方法。

另外,如果您想要更雄心勃勃的东西和更高级的东西,请尝试Demaine等人的blame tree数据结构,它是由git类版本控制系统中的冲突解决直接驱动的。


17

有趣的是,版本控制系统还处于起步阶段,尽管目前仅部分适用于Git。它被称为补丁理论 [1,2,3,4,5],是在DARCS版本控制系统的背景下出现的。它可以看作是分支合并的抽象理论。最近,已经对补丁理论进行了HoTT [6]和分类[7]处理。

补丁理论尚在开发中,并未涵盖版本控制的所有方面,但其中包含许多您可以查看的定理。这是适用于“现实世界”的理论的一个明显例子-不足为奇,因为补丁理论是对非常具体的事物的抽象/简化。同时,它与诸如HoTT之类的尖端数学联系在一起。


  1. J.Dagit,类型更正更改-版本控制实现的安全方法
  2. G. Sittampalam,darcs补丁理论的某些性质
  3. I. Lynagh,营地路径理论。
  4. D. Roundy,实施darcs修补程序形式主义...并进行验证。
  5. J.雅各布森,一个形式化的darcs补丁理论使用逆半
  6. C. Angiuli,E。Morehouse,DR Licata,R。Harper,同位修补理论
  7. S. Mimram,C。Di Giusto,补丁分类理论

4

另一种选择是查看持久性(或纯功能性)数据结构。Git的内部数据结构可以看作是一棵持久的树

持久数据结构是一种数据结构,当修改它时,它始终保留其自身的先前版本。这样的数据结构实际上是不可变的,因为它们的操作不会(可视地)就地更新结构,而是始终产生新的更新结构。

如果可以访问所有版本,但只能修改最新版本,则数据结构将部分保留。如果每个版本都可以访问和修改,则数据结构是完全持久的。如果还有一个融合或合并操作可以从两个先前的版本创建一个新版本,则该数据结构称为融合持久性。

这个问题也很重要。


1

是的,您可以在数学上定义Git的工作方式。您可以定义原始的Git结构和Git操作,然后通过定理证明以特定方式使用这些操作可以达到特定的更高级别的目标,或者尝试表征或量化并非如此的情况。(例如,Git对哈希的依赖为错误留下了很小的余地。)

另一个想法是对Subversion做同样的事情,然后产生比较两者的定理。例如,经常有人声称Git在合并方面比较擅长;您可以有定性或定性证明的定理。

实用性将严格取决于做出正确的抽象。用数学方式详细描述Git源代码的工作是没有意义的:源代码本身可以更有效,更简洁地完成此工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.