24小时热门版块排行榜    

查看: 1511  |  回复: 10

fanyuan315

新虫 (初入文坛)

[求助] 求教:如果找到有向无环图里各点到顶点的深度呢?拜托了! 已有2人参与

各位大侠:
      请求高人指点,我是做一个排序问题,问题已经转化成了一个有向无环图,想通过这个图找到每个点所在的层次关系,例如这样的一个有向无环图
    最后我想要得到的结果是,点0,1,2在第一层,3,4在第二层,5,6在第三层,7在第四层,8在第五层,9在第六层……
       请问,如何用c语言实现呢?哪怕给个算法思想也行啊,我对数组比较熟,但是不知道能否实现它?
        拜托了!

求教:如果找到有向无环图里各点到顶点的深度呢?拜托了!
有向无环图.jpg
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

锐利的碎片

木虫 (正式写手)

star watcher

【答案】应助回帖

★ ★
感谢参与,应助指数 +1
fanyuan315: 金币+2, 有帮助, 谢谢您的提示,原理上我明白,现在就差具体的用程序实现了。感谢您的帮助! 2014-07-24 14:35:01
2楼2014-07-24 11:10:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

枪下游魂

木虫 (著名写手)

不是很明白你的意思,你的意思是你已经知道了这样一个结构,是想构建出来,然后如果输入9,能输出它的从属关系?
3楼2014-07-28 09:29:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fanyuan315

新虫 (初入文坛)

引用回帖:
3楼: Originally posted by 枪下游魂 at 2014-07-28 09:29:02
不是很明白你的意思,你的意思是你已经知道了这样一个结构,是想构建出来,然后如果输入9,能输出它的从属关系?

您好:
     其实我的意思是根据上面的有向无环图,得到每个点在第几层,如上图所示0,1,2在第一层了,3和4在第二层,5,6在第三层,7在第四层,8在第五层,9在第六层。只要把大的层次关系找出来就行,至于同一层里面的关系不重要了就。
4楼2014-07-28 15:54:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fanyuan315

新虫 (初入文坛)

引用回帖:
3楼: Originally posted by 枪下游魂 at 2014-07-28 09:29:02
不是很明白你的意思,你的意思是你已经知道了这样一个结构,是想构建出来,然后如果输入9,能输出它的从属关系?

我程序里表达上面那个有向无环图使用一个二维数组表示的,比如[[0,3],[1,3],[2,4],[3,5],[3,6],[4,6],[6,7],[7,8],[8,9]],我不太会链表表达方式,平时主要用的就是数组,但是能否得到我想要的结果呢?理想的结果是我想得到一个这样的数组[[0,1,2,……],[3,4,……],[5,6,……],[7,……][8,……][9,……]],我的意思您懂了吗?谢谢您,帮我想想,给我点启发吧!如果必须要用链表解,我就看看数据结构方面的参考书。
5楼2014-07-28 16:00:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

枪下游魂

木虫 (著名写手)

【答案】应助回帖

引用回帖:
5楼: Originally posted by fanyuan315 at 2014-07-28 16:00:46
我程序里表达上面那个有向无环图使用一个二维数组表示的,比如,我不太会链表表达方式,平时主要用的就是数组,但是能否得到我想要的结果呢?理想的结果是我想得到一个这样的数组,我的意思您懂了吗?谢谢您,帮我 ...

你的意思是每一层用一个数组表示吧?
这个我没仔细想过,但是如果假设你已经知道了每一层的元素,以及层与层之间的从属关系,我觉得用struct结构数组会比较简单吧?也就是每个元素都是一个结构,这个结构里面有所属层号,上属元素,下属元素。
比如说
struct chain
{ int layer_number;
   int up_element;
   int down_element;
} *elements;

但是按照你的思路,似乎你不关心这一层元素与其它层元素的关系?
那以你的二维数组为基础,从最后一行的最后一个元素,比如说9开始,可以往前做一个搜索:9的起始层数为0,然后9和8在一个一维数组里且9是后面那个,9的层数+1;8和7在一个一维数组里且8是后面那个,9的层数+1;以此类推,直到遍历完所有行。这里面要设一个if,就是如果一个数字在两个数组里都出现且都是后面那个,那层数不变。最后把同层元素放在一个数组里
中间应该还有可以节省时间的地方。
6楼2014-07-29 08:10:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fanyuan315

新虫 (初入文坛)

引用回帖:
6楼: Originally posted by 枪下游魂 at 2014-07-29 08:10:41
你的意思是每一层用一个数组表示吧?
这个我没仔细想过,但是如果假设你已经知道了每一层的元素,以及层与层之间的从属关系,我觉得用struct结构数组会比较简单吧?也就是每个元素都是一个结构,这个结构里面有所 ...

首先非常感谢您的热心,我是新虫,几乎很少上论坛来寻求帮助,遇到您,是我的幸运了!
您说的意思给我了一点启发,我也想过首先先找第一层里的元素,这里是0,1,2,他们的层数就是0,然后从那个二维数组里面找到在这三个元素后面的数,3和4,他俩的层数就是0+1了,然后再找3和4后面的数,5和6,层数就是2,这里面遍历的时候有重复的话就要删掉,以此类推……直到最终找到最下面的层。
我想用我熟悉的数组来编,可能遍历的时候要费点劲,而且数组大小不好控制,还要把重复的数删掉。因为最后我是要变成大规模的,上万个数的这种情况。
7楼2014-07-29 08:54:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fanyuan315

新虫 (初入文坛)

引用回帖:
6楼: Originally posted by 枪下游魂 at 2014-07-29 08:10:41
你的意思是每一层用一个数组表示吧?
这个我没仔细想过,但是如果假设你已经知道了每一层的元素,以及层与层之间的从属关系,我觉得用struct结构数组会比较简单吧?也就是每个元素都是一个结构,这个结构里面有所 ...

抱歉,我级别太低了,没有红花送给你都!
8楼2014-07-29 08:58:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

枪下游魂

木虫 (著名写手)

引用回帖:
7楼: Originally posted by fanyuan315 at 2014-07-29 08:54:20
首先非常感谢您的热心,我是新虫,几乎很少上论坛来寻求帮助,遇到您,是我的幸运了!
您说的意思给我了一点启发,我也想过首先先找第一层里的元素,这里是0,1,2,他们的层数就是0,然后从那个二维数组里面找到在 ...

过奖了,我本身不是搞编程的,只不过现在的工作和编程相关。
这样可能需要动态的二维数组了。一个问题是二维数组每一层的维数是否可以不同?因为我都是编矩阵,所以没尝试过不同维数,如果可以的话,你需要一个数组保存每层的维数,和一个动态生成一维数组的子程序,然后在生成二维数组中循环调用它们。
9楼2014-07-29 09:22:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fanyuan315

新虫 (初入文坛)

引用回帖:
9楼: Originally posted by 枪下游魂 at 2014-07-29 09:22:41
过奖了,我本身不是搞编程的,只不过现在的工作和编程相关。
这样可能需要动态的二维数组了。一个问题是二维数组每一层的维数是否可以不同?因为我都是编矩阵,所以没尝试过不同维数,如果可以的话,你需要一个数 ...

您说您是编矩阵的?呵呵,很巧了,我上面那个有向无环图其实就是用邻接矩阵来表示的,是一个10*10的矩阵,出现1的时候,它的行和列就是指两个元素的先后关系。
最终结果我想要一个二维数组,如果是静态的维数肯定都是一样的,我会把数组大小变的很大,肯定能保证最多的容量。
按照您的意思,看来我还得是用链表了,这就是动态数组,我试着编一下吧。要不总想不实践总归还是发现不了问题的。
求教:如果找到有向无环图里各点到顶点的深度呢?拜托了!-1
IMG_20140729_092749.jpg

10楼2014-07-29 09:35:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 fanyuan315 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考博] 澳大利亚 Murdoch University 全奖博士招生(3个名额)地质化工冶金领域 +30 AI8RaGaPaSCR 2026-08-07 32/1600 2026-08-13 21:45 by Hd5o188FDaoB
[基金申请] 欢迎发来filecode的Mz6后的代码验证其规律 +10 医学老男孩 2026-08-13 27/1350 2026-08-13 21:43 by chemsynth
[基金申请] 咱们一起用铁证分析2026国家社科基金中标与否 +3 启萌科技 2026-08-12 10/500 2026-08-13 20:42 by hmhminy
[文学芳草园] 阿姨 +4 汪汪锅 2026-08-09 4/200 2026-08-13 19:43 by arzu_hma
[硕博家园] 一作与独作在应聘高校教师时区别大吗 +3 mbygzh 2026-08-08 4/200 2026-08-13 19:31 by 龙-樱
[基金申请] 静等基金结果 +8 gjjjzhong 2026-08-10 21/1050 2026-08-13 17:56 by 且听虎啸
[基金申请] FileCode能看出啥? +10 要乐观耀哥 2026-08-10 28/1400 2026-08-13 17:51 by 医学老男孩
[基金申请] 关于Filecode分析方法 +9 majunge000 2026-08-10 11/550 2026-08-13 10:40 by ZH远山
[基金申请] 我的国基提前知道中了,可是同事的操作让我实在接受不了,怎么会有这样的人 +9 家与远方 2026-08-10 14/700 2026-08-13 09:41 by 臭臭不臭01
[基金申请] 结合人工智能,周易传统文化,filecode打分制来了,3分以上希望很大。 +3 Tide man 2026-08-12 4/200 2026-08-13 08:35 by ZJTJZ
[基金申请] 2019年青年基金涵评意见,大家看看几个A,几个B? +11 Tide man 2026-08-11 11/550 2026-08-13 07:35 by 撸猫猫
[基金申请] 是这周出结果还是下周出结果? +3 yuleib84 2026-08-11 3/150 2026-08-11 21:53 by jnhyjjm
[基金申请] 帮忙看看fileCode +7 wwncly 2026-08-10 13/650 2026-08-11 19:36 by 冰心玉壶晴
[基金申请] 据悉今年马上要出结果了 +7 瞬息宇宙 2026-08-10 8/400 2026-08-10 12:42 by Vivilian
[基金申请] 2026国自然放榜时间 +9 布布和一二 2026-08-08 9/450 2026-08-10 11:22 by xxxx2020
[基金申请] 面上项目filecode邪修 +5 西山十月 2026-08-09 7/350 2026-08-10 07:32 by 仁砚薪传
[基金申请] 关于filecode,很负责任的告诉大家 +6 爱看书的可乐 2026-08-08 7/350 2026-08-08 22:13 by a_niu
[基金申请] 关于filecode +4 布布和一二 2026-08-07 7/350 2026-08-07 22:55 by zhanghaozhu
[基金申请] 化学口download_prp&fileCode的固定段好像这几天一直没变,有变的大神么? +3 Tide man 2026-08-07 4/200 2026-08-07 22:39 by Tide man
[基金申请] filecode变化情况 +6 布布和一二 2026-08-07 22/1100 2026-08-07 14:45 by 且听虎啸
信息提示
请填处理意见