首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >图形库API

图形库API
EN

Stack Overflow用户
提问于 2013-04-13 09:34:54
回答 2查看 380关注 0票数 3

我正在创建一个库来支持一些标准的图遍历。一些图是显式定义的:即,通过提供数据结构或通过重复调用相关方法来添加所有边。有些图只能隐式定义:即,我只能提供一个函数,该函数在给定节点的情况下将返回其子节点(特别是,当然,我遍历的所有无限图都必须隐式定义)。

遍历生成器需要是高度可定制的。例如,我应该能够指定是否需要DFS后序/前序/按序、BFS等;访问子节点的顺序(如果我提供了对它们进行排序的key );是否应该维护被访问的节点集;是否应该与节点一起产生后向指针(指向父节点的指针);等等。

我正在为这个库的API设计而苦苦挣扎(一旦API清晰了,实现就一点也不复杂了)。我希望它是优雅的,逻辑的,简洁的。有没有满足这些条件的图形库可以作为模板使用(不一定要用Python)?

当然,如果有一个Python库已经完成了所有这些工作,我很想知道,这样我就可以避免编写自己的代码。

(我使用的是Python 3。)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-15 12:16:27

如果您需要处理无限图,那么您将需要某种类型的图形函数接口(正如您在Q中所说的那样)。因此,我会将其作为标准表示,并提供辅助函数,这些函数接受其他表示并生成函数表示。

对于结果,也许您可以生成(您暗示一个生成器,我认为这是一个好主意)一系列的result对象,每个对象代表一个节点。如果用户想要更多的信息,比如反向链接,他们会调用一个方法,然后提供额外的信息(尽可能懒惰地计算,这样你就可以避免不需要它的人的成本)。

你没有提到这个图是不是有向图。显然,您可以将所有图视为有向图,并返回两个方向。但是,实现效率就不那么高了。通常(例如jgrapht)库对于不同类型的图形有不同的接口。

(我怀疑在优雅的api和效率之间取得良好平衡之前,您将不得不对此进行大量迭代)

最后,你知道functional graph library吗?我不确定它会有什么帮助,但我记得我在想(几年前)那里的api很不错。

票数 1
EN

Stack Overflow用户

发布于 2013-04-15 10:57:24

遍历算法和图形数据结构的实现应该是分开的,并且应该只通过标准的API相互通信。(如果它们耦合在一起,则必须为每个实现重写每个遍历算法。)

所以我的问题实际上有两个部分:

  1. 如何设计图形数据结构的API (由遍历等图形算法和创建/访问图形的客户端代码使用)
  2. 如何设计图形遍历算法的API (由需要遍历图的客户端代码使用)

我相信C++ Boost Graph Library很好地回答了我的两个问题。我希望(理论上)可以用Python重写它,尽管在尝试之前可能看不到一些障碍。

顺便说一句,我发现了一个在Python上下文中处理问题1的网站:http://wiki.python.org/moin/PythonGraphApi。不幸的是,它自2011年8月以来就没有更新过。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15986356

复制
相关文章
HIVE窗口函数
CSDN博客地址:https://mp.csdn.net/mdeditor/81067060
努力在北京混出人样
2018/07/16
1.2K0
SQL 窗口函数
以上是示例底表,共有 8 条数据,城市1、城市2 两个城市,下面各有地区1~4,每条数据都有该数据的人口数。
黄子毅
2022/04/18
1.6K0
SQL 窗口函数
HIVE窗口函数
窗口函数的应用场景http://yugouai.iteye.com/blog/1908121
努力在北京混出人样
2019/02/18
1.5K0
Hive窗口函数
Hive官网,点我就进 oracle,sqlserver都提供了窗口函数,但是在mysql5.5和5.6都没有提供窗口函数!
孙晨c
2020/10/10
1K0
SQL 窗口函数
MYSQL 从 8.0.2 版本起开始支持窗口函数,那么在窗口函数没出来之前,我们要实现类似的功能该怎么做呢?
白日梦想家
2020/07/18
7440
SQL 窗口函数
Hive窗口函数
Hive的窗口函数over( ),可以更加灵活的对一定范围内的数据进行操作和分析。
十里桃花舞丶
2022/05/10
3660
Hive窗口函数
Oracle SQL 基础:窗口函数(二)RANK函数如何使用窗口函数
我们可以看到使用RANK排位时遇到相同的排位的话,下个排位是有空位的,而DENSE_RANK是没有空位的。
SQLplusDB
2022/08/19
1.1K0
mysql窗口函数over中rows_MySQL窗口函数
窗口函数是OVER(),其中对应子句有PARTITION BY 以及 ORDER BY子句,所以形式有:
全栈程序员站长
2022/11/10
5.9K0
什么是窗口函数?
引用维基百科,窗口函数能够使用一行或多行的值来返回每一行的值。使用窗口功能,不再需要自连接(self-join)来同时显示原始值和聚合值。
用户8949263
2022/05/23
1.1K0
什么是窗口函数?
postgreSQL窗口函数总结
1、我们都知道在SQL中有一类函数叫做聚合函数,例如sum()、avg()、max()等等,这类函数可以将多行数据按照规则聚集为一行,一般来讲聚集后的行数是要少于聚集前的行数的,但是有时我们想要既显示聚集前的数据,又要显示聚集后的数据,这时我们便引入了窗口函数。
小徐
2020/02/16
2.7K0
postgreSQL窗口函数总结
hive sql 窗口函数
1) 窗口函数 Lag, Lead, First_value,Last_value Lag, Lead、这两个函数为常用的窗口函数,可以返回上下数据行的数据. LAG(col,n,DEFAULT) 用于统计窗口内往上第n行值 LEAD(col,n,DEFAULT) 用于统计窗口内往下第n行值, 与LAG相反 -- 组内排序后,向后或向前偏移 -- 如果省略掉第三个参数,默认为NULL,否则补上。
用户1217611
2020/06/19
1.2K0
hive sql 窗口函数
Flink sql 窗口函数
窗口函数Flink SQL支持基于无限大窗口的聚合(无需在SQL Query中,显式定义任何窗口)以及对一个特定的窗口的聚合。例如,需要统计在过去的1分钟内有多少用户点击了某个的网页,可以通过定义一个窗口来收集最近1分钟内的数据,并对这个窗口内的数据进行计算。
小石头
2022/11/10
1.2K0
mysql 窗口函数排序[通俗易懂]
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/09
1.5K0
mysql 窗口函数排序[通俗易懂]
SQL窗口函数概述
在应用WHERE、GROUP by和HAVING子句之后,窗口函数对SELECT查询选择的行进行操作。
用户7741497
2022/03/27
2.4K1
hive 窗口分析函数
0: jdbc:hive2://localhost:10000> select * from t_access; ±---------------±--------------------------------±----------------------±-------------±-+ | t_access.ip | t_access.url | t_access.access_time | t_access.dt | ±---------------±--------------------------------±----------------------±-------------±-+ | 192.168.33.3 | http://www.edu360.cn/stu | 2017-08-04 15:30:20 | 20170804 | | 192.168.33.3 | http://www.edu360.cn/teach | 2017-08-04 15:35:20 | 20170804 | | 192.168.33.4 | http://www.edu360.cn/stu | 2017-08-04 15:30:20 | 20170804 | | 192.168.33.4 | http://www.edu360.cn/job | 2017-08-04 16:30:20 | 20170804 | | 192.168.33.5 | http://www.edu360.cn/job | 2017-08-04 15:40:20 | 20170804 | | 192.168.33.3 | http://www.edu360.cn/stu | 2017-08-05 15:30:20 | 20170805 | | 192.168.44.3 | http://www.edu360.cn/teach | 2017-08-05 15:35:20 | 20170805 | | 192.168.33.44 | http://www.edu360.cn/stu | 2017-08-05 15:30:20 | 20170805 | | 192.168.33.46 | http://www.edu360.cn/job | 2017-08-05 16:30:20 | 20170805 | | 192.168.33.55 | http://www.edu360.cn/job | 2017-08-05 15:40:20 | 20170805 | | 192.168.133.3 | http://www.edu360.cn/register | 2017-08-06 15:30:20 | 20170806 | | 192.168.111.3 | http://www.edu360.cn/register | 2017-08-06 15:35:20 | 20170806 | | 192.168.34.44 | http://www.edu360.cn/pay | 2017-08-06 15:30:20 | 20170806 | | 192.168.33.46 | http://www.edu360.cn/excersize | 2017-08-06 16:30:20 | 20170806 | | 192.168.33.55 | http://www.edu360.cn/job | 2017-08-06 15:40:20 | 20170806 | | 192.168.33.46 | http://www.edu360.cn/excersize | 2017-08-06 16:30:20 | 20170806 | | 192.168.33.25 | http://www.edu360.cn/job | 2017-08-06 15:40:20 | 20170806 | | 192.168.33.36 | http://www.edu360.cn/excersize | 2017-08-06 16:30:20 | 20170806 | | 192.168.33.55 | http://www.edu360.cn/j
曼路
2019/05/26
5400
SQL之窗口函数
窗口函数,也叫OLAP函数(Online Anallytical Processing,联机分析处理),可以对数据库数据进行实时分析处理。 绝大多数情况,sql语句处理数据是行为基本单位,一行一行的对数据操作。窗口函数则是可以对行数据进行分组,将多行数据分成一组,然后进行组间操作或者组内操作。
cultureSun
2023/05/18
3810
SQL之窗口函数
浅谈MySQL窗口函数
含义:窗口函数也叫OLAP函数(Online Anallytical Processing,联机分析处理),可以对数据进行实时分析处理。
用户7569543
2022/02/25
1.2K0
浅谈MySQL窗口函数
玩转SQL窗口函数
DENSE_RANK() 函数用来表示排名,与RANK()不同的是,DENSE_RANK() 不会出现空缺数字。比如,如果出现了两个并列的1,DENSE_RANK() 的第三个数仍然是2,而RANK()的第三个数是3。
闫同学
2023/10/10
2660
点击加载更多

相似问题

从数据库读取比从文件读取快吗?

10

ObjC Plist文件读取速度比JSON快吗?

13

Python的读取速度比读取速度快

010

OpenGL读取像素的速度比glReadPixels快

10

用Python读取屏幕像素的速度比PIL快吗?

42
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文