text: Разделить P {\displaystyle P} на r {\displaystyle r} дизъюнктных подмножеств P 1 , P 2 , … , P r {\displaystyle P_{1},\;P_{2},\;\ldots ,\;P_{r}} мощности не более m {\displaystyle m} ; 2)for i = 1 to r do: (a) вычислить выпуклую оболочку Graham( P i {\displaystyle P_{i}} ), сохранить вершины в отсортированном по полярному углу массиве; 3)в качестве p 1 {\displaystyle p_{1}} взять самую левую и нижнюю точку из P {\displaystyle P} ; 4)for k = 1 to m do (a) for i = 1 to r do найти и запомнить точку q i {\displaystyle q_{i}} из P i {\displaystyle P_{i}} с максимальным углом p k − 1 p k q i {\displaystyle p_{k-1}p_{k}q_{i}} ; (b) взять в качестве p k + 1 {\displaystyle p_{k+1}} точку q {\displaystyle q} из q 1 , q 2 , … , q r {\displaystyle {q_{1},\;q_{2},\;\ldots ,\;q_{r}}} с максимальным углом p k − 1 p k q {\displaystyle p_{k-1}p_{k}q} ; (c) if p k + 1 = p 1 {\displaystyle p_{k+1}=p_{1}} return p 1 , … , p k {\displaystyle {p_{1},\;\ldots ,\;p_{k}}} ; 5) return m {\displaystyle m} маленькое, попробуйте еще; Ясно, что обход по Джарвису, а следовательно и весь алгоритм, будет корректно работать только если m ⩾ h {\displaystyle m\geqslant h} , но как заранее узнать, сколько точек будет в выпуклой оболочке?