См.р. по теме Алгоритмы