[devel] [JT] std::sort
Hihin Ruslan
=?iso-8859-1?q?ruslandh_=CE=C1_altlinux=2Eru?=
Вс Дек 17 22:42:52 MSK 2006
Здравствуйте Alex V. Myltsev
В сообщении от Sunday 17 December 2006 20:54 Alex V. Myltsev
написал(a):
> Этого мало. Это у вас вроде строгий частичный порядок получается, но
> он
>
> допускает такую ситуацию: a<b<c<e, a<d<e, пары (b,d) и (c,d)
> несравнимы.
> То есть несравнимость может быть нетранзитивной, а это плохо:
> например,
>
> подают нам на вход последовательность {a,c,d,b,e}; она
> неупорядочена, а
> сравнением соседних элементов мы этого обнаружить не можем. И
> сортировка вся идёт лесом.
Как это не парадоксально, но если читать что несравнимость - это один
из видов равенства, то можно упорядочить в - вашем примере
{a,b,c,d,e} или {a,(b,,d),e} - где (c,d,e) - любая перестановка из c,d,e
Интереснее вариант a<b<c<e, b<d<e, пары (a,d), (c,d) несравнимы
Имеем {a,b,(c,d),e}, т.е. значение (сортировочной меры) несравнимого
элемента должно быть равно максимальному из несравнимых с ней
элементов.
Если-бы упорядочивали по убыванию, а не по возрастанию, то тогда-бы
был минимальный элемент.
В любом случае первый этап такой сортировки - каждому элементу
присвоить сортировочную меру (вес), а потом сортировать уже элементы по
этой сортировочной мере.
Т.е. имеем соизмеримые элементы - с ними всё ясно - всегда можно
проиндексировать их, и несравнимые - для них вначале (до присвоения
реального веса) можно считать, что их вес очень большой и равен
условному максимуму. Но как только находится максимальный вес
несравнимого элемента, присваивается этот вес.
В нашем примере имеем первоначальные веса :
Исходя из b<d<e:
b=1
d=2
e=3
Исходя из a<b<c :
a=1
b=2
c=3
Т.к. у b входит в оба "графа", то имеем откорректированные веса первой
ветки:
b=2; d=3; e=4;
Т.к. все ветки дерева пройдены и все элементы пройдены - имеем :
a=1 b=2 c=3 d=3 e=3
В общем имеем ситуацию сортировки элементов графа
> А требуемый strict weak ordering -- это почти полный порядок, но
> только
> каждый элемент может быть в нескольких экземплярах. "Нестрогий
> полный
> порядок", что ли :).
Это тоже алгоритм, но приводит к дублированию элементов.
>
> > Да я Страуса листал а у него книжка толстая и наполовину
> > бестолковая.
>
> Google лучше.
Может я мои мысли помогут :)
--
С уважением Xихин Руслан
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20061217/5e43e060/attachment-0001.bin>
Подробная информация о списке рассылки Devel