摘要: 测试: 输入序列: 10 0 1 1 2 2 3 这样产生了长度为4的路径0->1->2->3。 阅读全文
posted @ 2017-03-16 22:40 我是老邱 阅读(406) 评论(0) 推荐(0)
摘要: Yes, but it could increase the tree height, so the performance guarantee would be invalid. 阅读全文
posted @ 2017-03-16 21:23 我是老邱 阅读(238) 评论(0) 推荐(0)
摘要: 不可能。如果是weighted quick-union的话,6的父节点应该是5,而不是5的父节点是6。 阅读全文
posted @ 2017-03-16 21:11 我是老邱 阅读(304) 评论(0) 推荐(0)
摘要: 假设原id数组: 0 1 1 4 4 8 6 1 8 0 输入p = 5, q = 7 则输出结果会出错,最终为: 0 1 1 4 4 1 6 1 8 0 因为当id[p](id[5] = 8)被赋值为id[q](id[7] = 1)之后,再用if(id[i] == id[p])来判断id[8]时, 阅读全文
posted @ 2017-03-16 20:51 我是老邱 阅读(428) 评论(0) 推荐(0)
摘要: 算法(Algorithms)第4版 练习 1.5.1 算法(Algorithms)第4版 练习 1.5.2 阅读全文
posted @ 2017-03-16 20:40 我是老邱 阅读(271) 评论(0) 推荐(0)
摘要: 对于weighted quick-union,对每个输入数据对,其最大的循环次数为lgN(sites) 故对于109 sites和106 input pairs,其总的指令次数为:sum = lg10^9 * 10^6 * 10 总的时间为:T = sum / 10^9 = 0.1s(约等于) 阅读全文
posted @ 2017-03-16 20:26 我是老邱 阅读(320) 评论(0) 推荐(0)
摘要: 对于quick-find,对每个输入数据对,其最少的循环次数为N(sites) 故对于109 sites和106 input pairs,其总的指令次数为:sum = 10^9 * 10^6 * 10 总的时间为:T = sum / 10^9 / 3600 / 24 = 116 days 阅读全文
posted @ 2017-03-16 20:19 我是老邱 阅读(441) 评论(0) 推荐(0)
摘要: 代码实现: reference input: 结果: worst-case input: 结果: 阅读全文
posted @ 2017-03-16 19:47 我是老邱 阅读(378) 评论(0) 推荐(0)
摘要: id数组和treesize数组变化情况: 森林图: 操作次数分析: find函数每次访问数组次数是1 + 2 * depth connected函数每次调用两次find函数 union函数每次调用两次find函数(如果两个连接点不在同一个树的话,则多一次数组访问) 对于这个client,对每个数据对 阅读全文
posted @ 2017-03-16 17:32 我是老邱 阅读(497) 评论(0) 推荐(0)
摘要: 森林图: 操作次数分析: find函数每次访问数组次数是1 + 2 * depth connected函数每次调用两次find函数 union函数每次调用两次find函数(如果两个连接点不在同一个树的话,则多一次数组访问) 对于这个client,对每个数据对,都调用一次connected函数和uni 阅读全文
posted @ 2017-03-16 16:50 我是老邱 阅读(570) 评论(0) 推荐(0)
摘要: id数组的变化情况: 操作次数分析: find()函数每次调用访问数组1次。 connected函数每次调用两次find()函数,故访问数组2次。 union函数访问数组的次数为:2 + N + (1,N-1)。其中2为两次调用find()函数,N为N次数组判断,(1,N-1)为可能的数组替换次数。 阅读全文
posted @ 2017-03-16 15:38 我是老邱 阅读(931) 评论(0) 推荐(0)