od Jankus » 24. 1. 2017 11:58
Popisem to ako 8 zvislych ciar a..h bez krizenia a napisem, medzi ktorymi su v ktorej vrstve komparatory (Cepek to ma radsej. na skuske som tie ciary krizil, aby porovnavene boli vedla seba - prislo mi to prehladnejsie - ale ze to strasne dlho lustil, nez zistil, ze su topologicky ekvivalentne
)
1) ab, cd, ef, gh (4 komparatory)
2) ac, bd, eg, fh (4)
3) bc, fg (2)
4) ae, bf, cg, hd (4)
5) ce, df (2)
6) bc, de, fg (3)
dohromady 6 vrstiev a 19 komparatorov
zotroji sa to podla algoritmu:
merge(x0..xn-1, y0..yn-1)
if (n==1) return ( min(x0,yo), max(x0,y0) )
a0..an-1 = merge(x0,x2..xn-2, y0,y2..yn-2)
b0..bn-1 = merge(x1,x3..xn-1, y1,y3..yn-1)
return ( a0, min(a1,b0), max(a1,b0), min(a2,b1), max(a2,b1) ... min(an-1, bn-2), max(an-1, bn-2), bn-1 )
Popisem to ako 8 zvislych ciar a..h bez krizenia a napisem, medzi ktorymi su v ktorej vrstve komparatory (Cepek to ma radsej. na skuske som tie ciary krizil, aby porovnavene boli vedla seba - prislo mi to prehladnejsie - ale ze to strasne dlho lustil, nez zistil, ze su topologicky ekvivalentne :D )
1) ab, cd, ef, gh (4 komparatory)
2) ac, bd, eg, fh (4)
3) bc, fg (2)
4) ae, bf, cg, hd (4)
5) ce, df (2)
6) bc, de, fg (3)
dohromady 6 vrstiev a 19 komparatorov
zotroji sa to podla algoritmu:
merge(x0..xn-1, y0..yn-1)
if (n==1) return ( min(x0,yo), max(x0,y0) )
a0..an-1 = merge(x0,x2..xn-2, y0,y2..yn-2)
b0..bn-1 = merge(x1,x3..xn-1, y1,y3..yn-1)
return ( a0, min(a1,b0), max(a1,b0), min(a2,b1), max(a2,b1) ... min(an-1, bn-2), max(an-1, bn-2), bn-1 )