python - Sorting points on multiple lines -
python - Sorting points on multiple lines -
given have 2 lines on graph (i noticed inverted numbers on y axis, mistake, should go 11-1)
and care whole number x axis intersections
we need order these points highest y value lowest y value regardless of position on x axis (note did these pictures hand may not line perfectly).
i have couple of questions:
1) have assume known problem, have particular name?
2) there known optimal solution when dealing tens of billions (or hundreds of millions) of lines? our current process of manually calculating each point , comparing giant list requires hours of processing. though may have hundred 1000000 lines typically want top 100 or 50,000 results of them far "below" other lines calculating points unnecessary.
your info construction set
of tuples
lines = {(y0, Δy0), (y1, Δy1), ...}
you need ntop
points, hence build set
containing top ntop
yi
values, single pass on data
top_points = choose(lines, ntop)
edit --- take ntop
had maintain track of smallest one, , interesting info, let's homecoming value choose
, need initialize decremented
top_points, smallest = choose(lines, ntop) decremented = top_points
and start loop...
while true:
generate set
of decremented values
decremented = {(y-Δy, Δy) y, Δy in top_points}
decremented = {(y-Δy, Δy) y, Δy in decremented if y>smallest} if decremented == {}: break
generate set of candidates
candidates = top_lines.union(decremented)
generate new set of top points
new_top_points, smallest = choose(candidates, ntop)
the next no more necessary
check if new_top_points == top_points
if new_top_points == top_points: break top_points = new_top_points</strike>
of course of study in loop...
the hard part choose
function, think this answer question how can sort 1 1000000 numbers, , print top 10 in python? help you.
python math
Comments
Post a Comment