任何人都知道我在哪里可以获得有向图的示例实现和用于在有向图上执行拓扑排序的示例代码?(最好用Java)
如何实现java.util.Comparator根据偏序关系对其元素进行排序?
例如,给定的部分顺序关系一个 ≺ Ç,b ≺ Ç ; a和b的顺序是不确定的.
由于Comparator需要总排序,因此实现命令部分排序未定义但是一致的元素.
以下工作会怎样?
interface Item {
boolean before(Item other);
}
class ItemPartialOrderComperator implements Comparator<Item> {
@Override
public int compare(Item o1, Item o2) {
if(o1.equals(o2)) { // Comparator returns 0 if and only if o1 and o2 are equal;
return 0;
}
if(o1.before(o2)) {
return -1;
}
if(o2.before(o1)) {
return +1;
}
return o1.hashCode() - o2.hashCode(); // Arbitrary order on hashcode
}
}
Run Code Online (Sandbox Code Playgroud)
您之前可能已经看过订购脑筋急转弯:
在最新一轮的BrainBashers铁人三项赛中,基思排名第四.阿德里安不是最老的,但比邓肯更老,后者不是第二名.接下来是最年轻的孩子,获得第二名.排在第三位的孩子比完成第一名的孩子年龄大.比利比完成第三名的孩子年轻.你能确定谁在哪里完成并按照年龄顺序放置孩子吗?[资源]
我正在寻找一种算法来解决看起来非常类似的问题.
我有一组对象,我想根据将对象相互关联的规则进行排序.对于给定的一组规则,可能存在多个解决方案.在有效的解决方案中,所有规则都得到满足.一组规则也可能没有有效的解决方案.
例:
对象: A, B, C, D, E, and F
规则:
一种可能的方案:
F A C E D B
Run Code Online (Sandbox Code Playgroud)
请注意,对象B与任何其他对象无关,因此它在序列中出现的位置无关紧要.
当然这已经做过了.谁能指出我正确的方向?我将最终在Java中执行此排序.