【问题标题】:Roll your own graph database for Emacs为 Emacs 滚动你自己的图形数据库
【发布时间】:2021-08-31 14:27:48
【问题描述】:

我正在考虑一个 Emacs 应用程序,它可以为 org-mode 提供基本的图形数据库功能。我想自己编写代码,一个滚动你自己的图形数据应用程序。任何人都可以指导我进行此类工作的数据结构和算法吗?我对图论知之甚少,只是基础知识。为了我的努力,我想将 org-mode 标题存储在单个 org-mode 文件中作为顶点,但也可以选择将整个 org-mode 文件存储为单个顶点。每个文件,每个标题顶点在 org-mode PROPERTIES“抽屉”中都会有一个唯一的 UUID 编号,可以理解为每个标题的结构。边缘可能是 RFD 式的——本质上是用作边缘的“谓词”顶点。做一个疯狂的猜测,我会说图形存储为邻接列表而不是邻接矩阵?某种形式的查询也应该是可能的。

任何建议表示赞赏。

【问题讨论】:

    标签: emacs graph-theory graph-databases org-mode graph-data-science


    【解决方案1】:

    所以,当我在 org-mode 中做类似的事情时,我经常会退回到它的原生 graphviz 支持。

    
    # Toggle inline images: c-c c-x c-v
    #+BEGIN_SRC dot :results output :file outfilename.png
    
       digraph "graphname" {
    
              A [label="foo"];
              B [label="bar", shape="box"];
              C [label="baz", shape="box"];
    
              A -> B;
              A -> C;
              C -> B;
              
       }
    
    #+END_SRC
    
    #+RESULTS:
    [[file:outfilename.png]]
    

    如果您需要大量数据,将 CSV 文件转换为一组 graphviz 点并不难。

    【讨论】:

    • 所以是的,我已经看到 Graphviz 使用了一种邻接列表。您的建议是使用他们的 AL 版本吗?
    • 写出更好的东西肯定没有错!但我经常发现,这样的数据库很快就会变得比简单的机制所能容纳的更具体和更棘手。
    • 几年前我确实写了一个 csvtodiag perl 脚本,它需要一个 CSV 并从 graphviz 中吐出一个 png。我仍然随机使用它。
    • 盒装图数据库有“官方”查询语言,但图论的算法方面只是有,对,在图中四处走动的算法。我的部分动机是有一些与理论无关的东西,因此,算法 GT。 Brain/Roam/Zettelkasten 的努力似乎忽略了 GT 甚至语义网。
    【解决方案2】:

    我想说this 对我来说是一个很好的起点。很好的讨论。一张海报提到了 Steven S. Skiena 非常出色的算法设计手册

    【讨论】:

      猜你喜欢
      • 2011-09-25
      • 2012-01-03
      • 2010-10-11
      • 2011-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-18
      • 2015-03-17
      相关资源
      最近更新 更多