OKAMutableDirectedGraph 是 Objective-C 中有向图的实现。
OKAMutableDirectedGraph 最初是为了管理依赖而开发的,但它可以用于路径查找、排序、垃圾回收等更多功能。
NSString *a = @"a";
NSString *b = @"b";
NSString *c = @"c";
OKAMutableDirectedGraph *graph = [[OKAMutableDirectedGraph alloc] init];
for (NSString *job in @[ a, b, c ]) {
[graph addNode:job];
}
[graph addEdgeFrom:c to:b];
[graph addEdgeFrom:b to:a];
NSMutableArray *sorted = [NSMutableArray array];
do {
NSArray *heads = graph.heads;
for (NSString *job in heads) {
[graph removeNode:job];
[sorted addObject:job];
}
} while (graph.heads.count != 0);
(lldb) sorted => @[ c, b, a ]
Oliver Atkinson
OKAMutableDirectedGraph 在 MIT 许可下可用。有关更多信息,请参阅 LICENSE 文件。