首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于算法的基于允许跟随对象的对象排序/重新排序

基于算法的基于允许跟随对象的对象排序/重新排序
EN

Stack Overflow用户
提问于 2012-11-06 21:32:57
回答 1查看 203关注 0票数 4

我需要开发一种算法,该算法将获取一组无序对象,并根据它们被允许继续进行的对象智能地重新排序。

我最初的设计/想法是使用核心数据来存储一个具有多对多关系("canGoTo")的实体(例如“对象”),以及一组可以跟随所选对象*对象的对象。

考虑下面的示例,其中每个对象都有一组对象,它可以在其中继续操作(实际的对象集要大得多)。

代码语言:javascript
复制
Object A - can go to -> Objects B,C,D
Object B - can go to -> Objects E,F,G,Y,H
Object C - can go to -> Objects P,S,Z
Object D - can go to -> Objects H,J,X
...
Object G - can go to -> Objects R,Y,Z
Object H - can go to -> Objects G,Z
...
Object Y - can go to -> Objects Z
Object Z - can go to -> Objects NULL (no objects follow this object)

如果程序被赋予一组对象(R,B,H,G,A,Z),程序需要找到如何重新排序对象以找到可接受的结构。因此,该集合的正确结果应该是A->B->H->G->Y->Z

解决此问题的最佳或最有效的策略是什么?当我成功地触摸到一遍中的所有对象时,我是否应该循环执行重新排序并退出?使用遗传算法生成输出并分析世代(即http://ijoshsmith.com/2012/04/08/simple-genetic-algorithm-in-objective-c/)?或者我使用Insertion Sort来分析所有对象,并将对象重新排序到它在序列中适合的位置?请记住,真正的对象列表更像是30+对象的长度,而不是6个,在理想情况下,程序会选择最好的方式对列表进行排序(可能基于"canGoTo“优先级)。

任何建议/最佳实践都将不胜感激。很抱歉没有示例代码,目前这还处于构思阶段。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-06 22:09:15

您可以将您的问题建模为Directed Acyclic Graph,然后在其上执行Topological Sorting。这将给出您正在寻找的确切输出。

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

https://stackoverflow.com/questions/13252135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档