Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Graph theory 图Dbs-节点位置-图论_Graph Theory_Graph Databases_Nosql - Fatal编程技术网

Graph theory 图Dbs-节点位置-图论

Graph theory 图Dbs-节点位置-图论,graph-theory,graph-databases,nosql,Graph Theory,Graph Databases,Nosql,假设您有一组包含所有英文字母的节点,您的任务是仅使用一些常规的“object1”和“object2”节点以及任意多的边来存储单词“foo”和“four” 你会像这样储存关系 (object1)--contains-->(f) (object1)--contains-->(o) 及 因此,您可以查询“contains”关系以查找给定单词的字母 那么,如何将双“o”存储在“foo”中呢 以及如何存储每个对象的字母顺序 换句话说,如何存储节点的相对位置(例如:(a)在(b)之前) 如果这

假设您有一组包含所有英文字母的节点,您的任务是仅使用一些常规的“object1”和“object2”节点以及任意多的边来存储单词“foo”和“four”

你会像这样储存关系

(object1)--contains-->(f)
(object1)--contains-->(o)

因此,您可以查询“contains”关系以查找给定单词的字母

那么,如何将双“o”存储在“foo”中呢

以及如何存储每个对象的字母顺序

换句话说,如何存储节点的相对位置(例如:(a)在(b)之前)

如果这些位置必须在2d环境中(例如网格中节点的位置),该怎么办

如何存储多个相似但独特的关系


和往常一样,我觉得我的英语很差,如果有什么不清楚的地方请问

如果您可以为关系分配属性,而不仅仅是类型,您可以

//创建条形图作为关系属性

    create (bar)
    create (bar)-[:contains{order:0]->(b)
    create (bar)-[:contains{order:1]->(a)
    create (bar)-[:contains{order:2]->(r)
    create (food)
    create (food)-[:contains{order:0]->(f)
    create (food)-[:contains{order:1]->(o)
    create (food)-[:contains{order:2]->(o)
    create (food)-[:contains{order:3]->(d)
//创建食物作为关系属性

    create (bar)
    create (bar)-[:contains{order:0]->(b)
    create (bar)-[:contains{order:1]->(a)
    create (bar)-[:contains{order:2]->(r)
    create (food)
    create (food)-[:contains{order:0]->(f)
    create (food)-[:contains{order:1]->(o)
    create (food)-[:contains{order:2]->(o)
    create (food)-[:contains{order:3]->(d)

Neo4j支持这一点,尽管上面的伪代码不能立即使用

也许最简单的解决方案是使用链表

//创建链接栏作为链接列表

    create (ar)-[:start]->(a)
    create (ar)-[:proceed]->(r)
    create (bar)-[:start]->(b)
    create (bar)-[:proceed]->(ar)
    create (od)-[:start]->(o)
    create (od)-[:proceed]->(d)
    create (ood)-[:start]->(o)
    create (ood)-[:proceed]->(od)
    create (food)-[:start]->(f)
    create (food)-[:proceed]->(ood)
//创建食物作为链接列表

    create (ar)-[:start]->(a)
    create (ar)-[:proceed]->(r)
    create (bar)-[:start]->(b)
    create (bar)-[:proceed]->(ar)
    create (od)-[:start]->(o)
    create (od)-[:proceed]->(d)
    create (ood)-[:start]->(o)
    create (ood)-[:proceed]->(od)
    create (food)-[:start]->(f)
    create (food)-[:proceed]->(ood)

这是图中链表的一个典型示例,假设单词cool,他可以这样存储:

(word:Word {name:"cool"})-[:FIRST]->(c)-[:NEXT]->(o)-[:NEXT]->(o)-[:NEXT]->(l)<-[:LAST]-(word)

(o)下面的,(o)下面的(l)以下,(l)以下,(l)以下,(l)以下,(l)以下,(l)以下,(l)以下,(l)以下,(l)以下,(l)以下,(以下)以下,(以下)以下,(以下)以下,(以下)以下,(以下)以下)以下,(以下)以下)以下,(单词:单词:单词:单词:单词:单词:单词:单词:单词:{{{名字:名字:名字:{{名字:{名字:c(姓名:c})以及,(以下)以下)以下)以下)以下)的,(,(以下)以下)以下)以下)的,(,(,(以下)以下)以下)的,(,(,(以下)以下)以下)以下)以下)以下)的,(,(,(,(,(,(,(以下)以下)以下)以下)以下)以下)以下)以下)以下)以下)以下)以下)学校,(,(,(,(,(,(,(,(,(,(以下)以下)以下)以下)以下)以下)以下)以下)以下)以下)以下)以下)以下)'c'})-[:下一个]->(:字母{name:'o'})-[:NEXT]>(:Letter{name:'l'})-[:NEXT]>(:Letter{name:'d'})你如何在同一个图中表示“酷”、“冷”和“傻瓜”,克里斯托弗?哎呀,克里斯托弗,你意识到你创造了十几个“o”吗-模型中的节点?进一步说:我看不到有共同字母的单词之间有任何联系,我想这对Hrabal是必不可少的。嗯,不,我看不到数千个节点,这可能是console实例的问题。我看不到任何关于关联有共同字母的节点的问题。如果你这样做,你将关联几乎所有的数据库?一个d、 如果您想查找单词中具有例如组合“oo”的单词,您可以运行以下查询:MATCH(o:Letter{name:'o'}),(o2:Letter{name:'o'}),其中o o2 MATCH(w:Word)-[:FIRST | NEXT*]->(o)-[:NEXT]->(o2)返回w.name当然假设:Letter(name)上有索引我想在node.js/neo4j解决方案上工作,Hrabal,你能投票支持下面的一个伪代码解决方案吗,这样我就知道你在寻找什么了?请澄清你的目标:你会用这个gaph回答哪些问题?