2011-09-15 127 views
3

我有一个应用程序列表。我需要以特定方式订购它们并按照该顺序安装。如何订购此清单?

需要考虑的事情:

某些应用程序有一个要求,其他应用程序。

一些应用程序需要重新启动之前安装的下一个应用,我们希望这个应用程序留在名单的底部,但他们中的一些可能需要不需要重新启动,这样一个应用程序,它可以发生一些应用程序,没有任何要求重新启动,需要重新启动的应用程序之后。

一个例子:

P1 (Reboot) 
P2 (Needs P3) 
P3 
P4 (Needs P1) 
P5 (Reboot and needs P3) 
P6 (Reboot) 
P7 

所以,如果我们在该顺序应用程序:

P1 - P2 - P3 - P4 - P5 - P6 - P7 

正确的顺序是(例如):

P3 - P7 - P2 - P1 - P4 - P5 - P6 

如果theres一个非重新启动的应用程序,要求一个应用程序,需要重新启动(如P4)会更好,如果他们留在上面的名单比其他人重新启动应用程序(P5 - P6)

+1

为了避免您的问题关闭,您应该考虑减少需求描述并增加*实际提出问题的文本数量*。 –

回答

3

您需要topological sorting算法。

+0

我不知道这个体贴的最后陈述与这种排序(把没有reebot的那些与reebot一样要求的)放在上面。也许加入两种分类将是解决方案。让我看看,谢谢 – Deitools

+2

这确实是一个图形问题。国际海事组织的应用程序应首先通过检测连接组件分组,http://en.wikipedia.org/wiki/Connected_component_%28graph_theory%29 –