Oberon space

General Category => Общий раздел => Тема начата: ilovb от Ноябрь 17, 2013, 08:31:09 pm

Название: Полезные ссылки по алгоритмам и структурам данных
Отправлено: ilovb от Ноябрь 17, 2013, 08:31:09 pm
Предлагаю в этой ветке делиться полезной информацией по всяким алгоритмам и структурам данных.

Вот сносное учебное пособие Новосибирского Государственного Технического Университета:
http://edu.nstu.ru/courses/saod/content.htm

Performance Analysis of BSTs in System Software (http://benpfaff.org/papers/libavl.pdf)
Название: Re: Полезные ссылки по алгоритмам и структурам данных
Отправлено: ilovb от Ноябрь 17, 2013, 10:16:24 pm
Хороший сайтик на английском: http://eternallyconfuzzled.com/jsw_home.aspx
Есть некоторые переводы: http://rflinux.blogspot.ru/2011/10/red-black-trees.html
Название: Re: Полезные ссылки по алгоритмам и структурам данных
Отправлено: Valery от Ноябрь 22, 2013, 06:38:41 pm
Известный сайт: http://e-maxx.ru/algo/
Название: Re: Полезные ссылки по алгоритмам и структурам данных
Отправлено: ilovb от Ноябрь 24, 2013, 07:54:42 pm
Robert Sedgewick - Left-leaning Red-Black Trees (http://www.cs.princeton.edu/~rs/talks/LLRB/LLRB.pdf)
Название: Re: Полезные ссылки по алгоритмам и структурам данных
Отправлено: ilovb от Ноябрь 24, 2013, 08:09:54 pm
Удаление невидимых частей трехмерной сцены с помощью BSP-деревьев (http://cgm.computergraphics.ru/content/view/98)

BSP-дерево (Двоичное разбиение пространства) (http://ru.wikipedia.org/wiki/%D0%94%D0%B2%D0%BE%D0%B8%D1%87%D0%BD%D0%BE%D0%B5_%D1%80%D0%B0%D0%B7%D0%B1%D0%B8%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D1%81%D1%82%D1%80%D0%B0%D0%BD%D1%81%D1%82%D0%B2%D0%B0)[en] (http://en.wikipedia.org/wiki/Binary_space_partitioning)

ps В русской Wiki примеры походу одинэснег писал  ;D
Цитировать
Процедура ОбойтиУзел(Узел)
  Если Узел <> ПустойУказатель
    Если ВекторыСонаправлены(ВекторНаблюдения, Узел.НормальРазбивающейПлоскости)
      Если СкалярноеПроизведение(ТочкаНаблюдения, Узел.НормальРазбивающейПлоскости) >= 0
        // Плоскость находится сзади наблюдателя, наблюдатель видит только фронтальное поддерево
        ОбойтиУзел(Узел.ФронтальноеПоддерево);
      Иначе
        // Плоскость находится спереди наблюдателя,
        // фронтальное поддерево находится дальше оборотного
        ОбойтиУзел(Узел.ФронтальноеПоддерево);
        ДобавитьПолигонВСписокОтображения(Узел.Полигон);
        ОбойтиУзел(Узел.ОборотноеПоддерево);
      КонецЕсли;
    Иначе
      Если СкалярноеПроизведение(ТочкаНаблюдения, Узел.НормальРазбивающейПлоскости) >= 0
        // Плоскость находится спереди наблюдателя,
        // оборотное поддерево находится дальше фронтального
        ОбойтиУзел(Узел.ОборотноеПоддерево);
        ДобавитьПолигонВСписокОтображения(Узел.Полигон);
        ОбойтиУзел(Узел.ФронтальноеПоддерево);
      Иначе
        // Плоскость находится сзади наблюдателя, наблюдатель видит только оборотное поддерево
        ОбойтиУзел(Узел.ОборотноеПоддерево);
      КонецЕсли;
    КонецЕсли;
  КонецЕсли;
Конец;