求教有向图排布算法

积木 2006-07-20 01:26:17
条件:
一定数量的节点,
一定数量的边,
组成一个有向图(当然这个图可能会有环)

问题:
给出一个排布算法,也就是计算各个节点的坐标(暂时不考虑节点的大小)

要求:
没啥要求,给出一个能看排布就可以,大家讲讲思路,
图论我是基本不会。。。。
...全文
531 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
积木 2006-08-07
  • 打赏
  • 举报
回复
:haohe(舒克)
你的做法我合计了一下,会不会出现不稳定的情况?所谓的不稳定就是两次排布的结果不一样?嗬嗬,这样的做法放在科研里面能用吧,最好是对于特定的一个图,只有一种排布方法。

你的方法说白了就是初始情况+不断的迭代,对吧。
积木 2006-08-01
  • 打赏
  • 举报
回复
未名,你说的那个是一个demo?有source的?
积木 2006-08-01
  • 打赏
  • 举报
回复
:-D,这是一个很好的想法啊。我明白了。我去鼓捣鼓捣。
zzwu 2006-08-01
  • 打赏
  • 举报
回复
我在JAVA的SDK中看到过程序,它的初始布局是随机产生的,这时很多边
可能相互有交,很难看,然后就是进行自动调整,最后各边就相互不交了.
没有仔细看它的算法,只是看了执行程序的演示.
yyfhz 2006-08-01
  • 打赏
  • 举报
回复
就是根据关系矩阵来画出图画来喽?要画图很容易,在平面上把顶点洒下去,然后用线连起来不就行啦。至于每个点定位在哪里比较好看嘛,可以从某个顶点开始,把整个图当成一个无向图,进行广度优先的遍历,然后一层一层的把节点画出来。
haohe(舒克)提出的方法也很好啊
积木 2006-08-01
  • 打赏
  • 举报
回复
最后再顶一次~~~~~~
积木 2006-07-24
  • 打赏
  • 举报
回复
帖子沉了,自己顶顶。没有老大知道么?
积木 2006-07-21
  • 打赏
  • 举报
回复
....根本就是我没说明白。我在做一个图形自动排布的软件。
我需要在给出一定数量的顶点和边的情况下自动计算顶点的位置。这个算法石有成型的算法……但是我没有找到。。。郁闷。
你看很多数据库分析软件不是都可以根据表和表之间的关系生成一个联系图么。我要的就是那个感觉的东西。。。
vldb 2006-07-21
  • 打赏
  • 举报
回复
你的目的是不希望某些地方太密集,导致看不清楚点和边,是么?

可以采用类似于弹簧工作原理的算法。假设每条边都是一个弹簧。同时也给任意顶点之间加上跟距离相关的斥力,使得没有边的情况下,顶点能均匀散布。对于给定的边,如果边长过大,就收缩;边长太小,就伸展。开始随机把顶点撒到平面上,然后加上边的作用力。于是每个顶点会受到边的压缩或者拉伸,这些点的坐标相应发生移动。迭代多次,能稳定到你设置的终止条件即可。如果效果不好,再加一次随机震动,重新开始移动。

积木 2006-07-20
  • 打赏
  • 举报
回复
呵呵,节点用边连接起来,而边还是有向的,就构成了有向图。我打算把一个有向图自动排布出来显示在画面上,也就是有规律的显示他们的相互关系。
llwu 2006-07-20
  • 打赏
  • 举报
回复
节点的坐标指的是什么?
图论中的图和节点的空间排布是没有关系的。

33,009

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧