Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Сборник 70 студ конференции БГТУ

.pdf
Скачиваний:
83
Добавлен:
18.03.2016
Размер:
20.16 Mб
Скачать

381

Результаты, полученные лично автором: созданы средства генерации данных для заполнения пространственно-временных структур данных.

Внастоящее время происходит рост значимости систем, для которых необходимо учитывать положение каких-либо объектов в пространстве, и, как следствие, рост потребности в эффективной обработке пространственновременных данных. Среди областей применения структур и алгоритмов для такой обработки можно выделить не только позиционирование транспортных средств в воздухе, воде и на земле, но также и системы автоматизированного проектирования, компьютерные игры и даже медицину.

Впроведённой работе были рассмотрены некоторые из существующих пространственно-временных структур данных, а именно: STR-дерево (Spatio- Temporlal-tree), предложенное в статье

«NovelApproachestotheIndexingofMovingObjectTrajectories» (D. Pfoser, C. Jensen, Y. Theodoridis), TB-дерево (Trajectory-Bundle-tree), предложенное в той же статье и метод SETI (ScalableandEfficientTrajectoryIndexing), предложенное в статье «IndexingLargeTrajectoryDataSetsWithSETI» (V. PrasadChakka, AdamC. Everspaugh, JigneshM. Patel).

Исследование является частью курсового проекта по дисциплине «Структуры и алгоритмы обработки данных», целью которого является создание библиотеки для индексирования траекторий переместившихся объектов на плоскости и приложения, демонстрирующего её работу.

Врамках проекта необходимо создать средство получения данных о местоположении объектов. Модель генерации и индексации данных такова: через определённый промежуток времени от виртуальных объектов приходит информация о их текущем положении в виде пары целочисленных переменных. С учётом вновь поступившей информации строится участок траектории и с помощью операции вставки добавляется к STR-дереву и TBдереву. В структуру SETI поступает не участок траектории, а только новая точка. Рассмотрим подробнее, каким образом информация «приходит» в программу для индексирования.

Сначала создаются два массива точек (переменная типа POINT): pnts1 и pnts2. Каждый из них имеет размер, равный количеству индексируемых элементов. В pnts1 заносятся случайные координаты, полученные с помощью функцииrand(). Предусмотрено, что эти координаты не выходят за рамки рабочей области индексирования. Сразу же после этого набор сгенерированных точек индексируется в структуре SETI, но не в деревьях – мы ещё не имеем отрезков траекторий, лишь по одной точке для каждого объекта.

Вприложении, использующем изучаемые структуры и написанном с применением Win32 API, организована работа с таймером, и при обработке сообщения от него происходит следующее: запускается цикл по всем объектам, внутри которого сначала заполняется массив pnts2, затем заполняются поля временной структуры типа Traject–отрывка траектории, состоящего из двух точек для каждого объекта: одна – из массива pnts1, вторая – из pnts2. Эти участки вставляются в STR- и TB-деревья. В структуру

382

же SETIвставляются точки из массива pnts2. Следует обратить внимание, что заполнение массива pnts2 происходит на основе данных из pnts1: новая точка ставится неподалёку (в масштабах всей рабочей области) от предыдущей. Так имитируется равномерное движение объектов по области. На последней стадии цикла с целью обеспечения связности траекторий каждого объекта массив pnts1 заполняется соответствующими значениями из массива pnts2. Таким образом, при обработке следующего сообщения от таймера и получении новых участков траекторий (или точек, в случае с SETI) будет учитываться предыдущее положение объектов, что гарантирует связность траекторий.

Чтобы объекты двигались не только в направлении увеличения значений координат, точки нового положения зависят от чётности значения координат предыдущего положения. Если координата xпредыдущего положения нечётна, новое значение xдля этого объекта будет увеличено. Если чётна – уменьшено. Для координат yпринцип такой же, только работает наоборот.

На рис. 1 представлена рабочая область после обработки некоторого запроса. Красными линиями обозначены траектории, удовлетворяющие критериям запроса (траектории объектов с ID 1, 3 и 5 за время 0 – 40 секунд).

Рисунок 6. Пример сгенерированныхтраекторий

Таким образом, эмулируется получение данных от объектов об их местоположении и заполняются изучаемые индексные структуры.

Работа выполнена под руководством доц. каф. «Информатика и программное обеспечение» А.О. Трубакова

М.Д. Прошина ПРАКТИЧЕСКИЕ РЕКОМЕНДАЦИИ ПРИ РАЗРАБОТКЕ

WEB-САЙТОВ

Объект исследования: дизайн web-сайтов.

Результаты, полученные лично автором: разработаны рекомендации для создания web-сайтов, рассмотрены аспекты применения цветовой гаммы и шрифтов, а также оформление контента.

383

Содержание сайта, в первую очередь, должно представлять интерес для потенциального посетителя, привлекать внимание читателя своей «изюминкой», поэтому при создании важным является выбор стиля. Стиль – это система визуальных элементов, призванная обеспечить цельность восприятия данной страницы или всего сайта. Поэтому главной целью данной работы является: предложить правила, которые помогут создать правильный web-сайт,привлекательно выглядящий и емко выражающий основную идею.

Взадачи работы входило:

Рассмотреть типы дизайна сайтов.

Сделать выводы об использовании цветовой гаммы и шрифтов.

Рассмотреть правила оформления контента.

Рассмотреть такой инструмент оформления текста как «Заголовки».

Исследовать эффективность использования схемы при создании сайта.

Выявить рекомендации для созданияweb-сайта.

Врезультате были сделаны следующие выводы:

1.Рекомендации при разработке web-сайта:

1)Оформление Web-сайта должно быть выдержано в едином стиле, с одинаковым цветовым решением всех страниц, с одними и теми же правилами оформления текста.

2)При этом следует использовать одну, максимум две, шрифтовые гарнитуры.

3)Предпочтительно верстку текста производить в две колонки, в редких случаях в три колонки, что способствует более быстрому восприятию текста.

4)В пространстве страницы типового сайта можно выделить четыре функциональные области: «шапку», панель навигации, блок основного текста и «подвал».

5)Дополнительно на главной странице могут быть выделены зоны для новостной ленты, баннерной рекламы и пр.

6)Объём страницы не должен быть более двух-трёх экранов по вертикали. Появление горизонтальной линии прокрутки недопустимо.

7)Между ёмкими текстовыми блоками следует вставлять таблицы и списки (для "отдыха" глаз). Абзацы текста исполнять с отбивкой.

8)Под поверхностью сайта должна располагаться его схема, которая определяет расположение кнопки закладок, фотографий и блоков текста.

2. Рекомендации при использовании цветовой гаммы и шрифтов:

1)Делайте однотипный дизайн на всех страницах сайта — в противном случае посетителю будет трудно ориентироваться.

2)Старайтесь использовать стандартные виды шрифтов, так как у посетителя может не оказаться выбранного вами специфического шрифта.

3)Используйте не более двух разных шрифтов на сайте. Чтобы разнообразить текст или выделить какие-то его участки, можно использовать такие свойства, как курсив, жирный или подчеркнутый шрифты.

384

4)Избегайте очень ярких цветов, чтобы для просмотра вашего сайта не нужно было сильно напрягать глаза. Лучше всего использовать нейтральные тона.

5)Сайт должен быть спроектирован для различных разрешений.

3. Рекомендации при оформлении контента:

1)Описание должно вестись более простым языком без литературного украшательства и использования научных и технических терминов.

2)Текст страниц сайта должен быть тщательно выверен с целью исключения грамматических ошибок и опечаток. Страницы не должны содержать устаревшего или просроченного материала.

3)В верхней части страницы должно находиться название и краткое назначение сайта.

4)Изображение в тексте смотрится органично, если оно занимает около 1/3 ширины контентной области.

5)Заголовкипомогают читателю быстрее найти ответ на интересующий вопрос.

Работа выполнена под руководствомдоц. каф. «Информатика и программное обеспечение» К.В.Дергачева

М.Д. Прошина ДОКУМЕНТНО-ОРИЕНТИРОВАНЫЕ БАЗЫ ДАННЫХ

Объект исследования: документно-ориентированные базы данных. Результаты, поученные лично автором: были подробно рассмотрены

особенности использования документно-ориентированных баз данных на примере MongoDB-высокопроизводительная ДОБД.

Документно-ориентированная база данных — программное обеспечение, специально предназначенная для хранения иерархических структур данных (документов). В основе документно-ориентированных БД лежат документные хранилища, имеющие структуру дерева. Документы могут быть организованы в коллекции. Коллекции могут содержать другие коллекции. Хотя документы коллекции могут быть произвольными, для более эффективного индексирования лучше объединять в коллекцию документы с похожей структурой.

Взадачи работы входило:

1)Выявить особенности использования документно-ориентированных БД.

2)Рассмотреть способ хранить и передавать структурированные данныеJSON.

3)Сравнить MongoDBи реляционные СУБД.

4)Рассмотреть основные операции при работе с документами в MongoDB.

Врезультате были сделаны следующие выводы:

1. Особенности MongoDB.

1)Документное хранилище, не требующее создания схем (таблиц).

2)Запросы в стиле JSON (очень удобно). JSON строится на двух структурах - набор пар имя/значение. Объект — это неупорядоченное множество пар

385

имя/значение, заключённое в фигурные скобки. Между именем и значением стоит символ «:», а пары имя/значение разделяются запятыми.

3)Широкий набор (атомарных) операций над данными.

4)Разные типы данных (поддержка массивов)

5)Хранение больших объектов.

2.Отличие документно-ориентированной СУБД MongoDBот реляционных баз данных.

1)Хранение данных в виде документов.Если реляционные базы данных хранят строки, то MongoDB хранит документы. В отличие от строк документы могут хранить сложную по структуре информацию.

2)Хранение документов в виде коллекций. В реляционных БД таблицы хранят однотипные жестко структурированные объекты. Коллекции могут содержать самые разные объекты, имеющие различную структуру и различный набор свойств.

3)Кроссплатформенность.MongoDB написана на C++, поэтому ее легко портировать на самые разные системы.

3. Основные операции при работе с документами

1)При добавлении документа в коллекцию не нужно явно создавать эту коллекцию, если её ещё нет, MongoDB сделает это при добавлении документа. Необходимо указатьбазу данных, имя коллекции, для которой применяется метод вставки документа insert

2)Для просмотра коллекций используется команда showcollections, а для выборки данных используется метод коллекции find().

3)Для обновления используется метод коллекции update.

4)Для удаления данных используем метод коллекции remove.

5)Для удаления коллекции используем метод drop_collection.

Работа выполнена под руководством доц. каф. «Информатика и программное обеспечение» Д.И.Копелиовича

Д.А.Рыженков МОДЕЛИРОВАНИЕ ПРОЦЕССА МОНИТОРИНГА ДАННЫХ

Объект исследования: мониторинг социально-экономических систем. Результаты, полученные лично автором:разработан общий план создания и проведения процесса мониторинга СЭС.

Цель данной работы –изучить закономерности и спроектировать универсальную систему процесса мониторинга.

При огромном количестве информации в современном мире для лиц, принимающих решения, необходим инструмент, который позволил бы эффективно проводить анализ и наблюдать за управляемыми системами. Нужно не только учитывать происходящее, но и иметь средства для реализации задач управления. Использование систем мониторинга актуально во многих областях жизнедеятельности человека, таких как образование, здравоохранение и другие.

386

Понятие «мониторинг» стало общепризнанным как в науке, так и в других областях общественной практики. Речь идет о постоянном наблюдении за каким-либо процессом с целью выявления его соответствия желаемому результату. Иначе говоря, если диагностика ситуации осуществляется систематически с определенной заданной периодичностью и с использованием одной и той же (во всяком случае, базовой) системы индикаторов, мы имеем дело с мониторингом.

Качественная система мониторинга имеет ряд общих характеристик. Простота. Система должна напрямую и наиболее простым способом продуцировать все необходимые данные.

Гибкость. Система должна легко меняться, особенно в том случае, если текущая оценка показывает, что изменения необходимы или желательны. Например, может появиться необходимость добавить информацию о другом виде регистрируемых медицинских услуг либо изменить целевую выборку, чтобы охватить определенный тип заболеваний.

Приемлемость для участников. Система будет работать в том случае, если люди желают принимать в ней участие. Вовлечение персонала в разработку, оценку и модификацию бланков для сбора данных позволит придать им уверенность в том, что бланки просты для заполнения, а их цель понятна.

Надежность. Все пользователи данных, продуцируемых системой мониторинга, должны быть абсолютно уверены в точности этих данных. Практичность. Система должна быть практичной и доступной. Не нужно создавать лишнюю нагрузку на персонал Устойчивость. Система должна функционировать при минимуме

затрачиваемых усилий, легко поддерживаться и обновляться, продолжая служить своим целям с момента ее организации.

Своевременность. Система должна продуцировать по необходимости самую современную информацию.

Безопасность и конфиденциальность. Это две важнейшие черты системы мониторинга.

Основываясь, на данных, полученных мною из разных источниках и собственных выводах, я спроектировал основные ступени, необходимые для полной реализации системы мониторинга.

Проектирование процесса

Определение целей системы мониторинга

Идентификация совместных организаторов мониторинга

Определение источников данных

Оценка ресурсов

Планирование процесса

Запуск процесса мониторинга

Сбор данных

Введение данных

Обработка данных

Составление отчета

387

Модернизация мониторинга

Оценка содержимого программы

Оценка качества и последовательности реализации

Оценка рамок и среды деятельности

Устранение неполадок

Формирование результата

Вывод о требуемой периодичности мониторинга

Оценка итоговых затрат

Получение конечных выводов на основании отчетов

Данные ступени могут быть модифицированы или отброшены в случаи определенных ситуаций. В дальнейшем мною планируется модернизация и более подробное углубление в детали процесса.

Работа выполнена под руководством доц. каф. «Информатика и программное обеспечение»Д.И. Копелиовича

И.А. Савостин

УПРАВЛЕНИЕ ОПТИМИЗАЦИЕЙ C++ И C# КОМПИЛЯТОРОВ

Объект исследования: компиляторы компании Microsoft для языков C++

и C#.

Результаты, полученные лично автором: исследованы механизмы оптимизации и способы управления ими.

Как известно, с помощью оптимизации исполняемого файла можно добиться баланса между высокой скоростью выполнения программы и её размером.

С помощью следующих ключей можно управлять оптимизацией компилятора MS Visual C++.

/O1 — оптимизация для получения минимального размера кода = /Og /Os /Oy /Ob2 /Gs /GF /Gy

/O2 — оптимизация кода для получения максимальной скорости его выполнения = /Og /Oi /Ot /Oy /Ob2 /Gs /GF /Gy

Параметры /O1 и /O2 также включают оптимизацию возврата именованных значений, благодаря чему уменьшается количество вызовов конструкторов копирования и деструкторов временных объектов, хранящихся в стеке.

/Ob — контроль над расширением встроенных функций.

Расширяет функции, помеченные как inline или __inline, а также любые другие функции, выбираемые компилятором (расширение происходит, если это необходимо компилятору, что часто называется auto-inlining).

/Od — отключение оптимизации для ускорения компиляции и упрощения отладки.

388

/Og — включение глобальной оптимизации (локальное и глобальное исключение общей части выражения, автоматическое выделение регистров, оптимизация циклов).

/Oi — создание встроенных функций для соответствующих вызовов функций. Заменяет вызов некоторых функций на встроенные или какие-либо другие формы функции, которые способствуют более быстрому выполнению приложения.

/Os — задание для компилятора приоритетности оптимизации для уменьшения размера кода над оптимизацией для увеличения скорости его выполнения.

/Ot (настройка по умолчанию) — задание для компилятора приоритетности оптимизации для увеличения скорости выполнения кода над оптимизацией для уменьшения его размера. При использовании параметра /Os или /Ot следует также указывать параметр /Og для оптимизации кода.

/Ox — выбор полной оптимизации. Задание параметра компилятора /Ox дает тот же результат, что и использование следующих параметров. /Ob, /Og, /Oi, /Ot, /Oy. Параметр компилятора /Ox также включает оптимизацию именованных возвращаемых значений, после чего для стековых возвращаемых значений не используются конструкторы копирования и деструкторы.

/Oy — отключение создания указателей фреймов для стека вызовов, что позволяет повысить скорость вызова функций. Также для хранения часто используемых переменных и подвыражений высвобождается один регистр (EBP на процессорах Intel 386 или более поздних версиях). Параметр /Oy доступен только в компиляторах для архитектуры x86.

/GL — Профильная оптимизация. Позволяет оптимизировать выходной файл. Для этого в оптимизаторе используются данные тестовых запусков EXE-файла или DLL-файла. В этих данных представлен наиболее вероятный процесс выполнения программ в рабочей среде. Сведения, собранные из тестовых запусков профилирования, переопределяют оптимизации, которые в противном случае были бы задействованы в случае указания /Ob, /Os или /Ot.

В .NET нет линковщика, который был бы вовлечён в модель компиляции. Вместо этого есть компилятор исходного кода (C# compiler) и JIT-компилятор. Над исходным кодом выполняются только минорные оптимизации. Например, на этом уровне мы не увидим инлайнинга функций или оптимизаций циклов. Вместо этого данные оптимизации выполняются на уровне JIT-компиляции.

/optimize также заставляет среду CLR выполнять оптимизацию кода во время выполнения.

Работа выполнена под руководством ктн. доц. каф. «Информатика и программное обеспечение» Е. А. Белова

389

И.А. Савостин

K-D ПИРАМИДА: ЭФФЕКТИВНАЯ МНОГОМЕРНАЯ ПРИОРИТЕТНАЯ ОЧЕРЕДЬ

Объект исследования: K-D пирамида.

Результаты, полученные лично автором: проведено исследование структуры данных, проанализирована её эффективность.

На практике информационные объекты ассоциируются с более, чем одной категорией приоритетов. В системах БД записи могут индексироваться по различным полям, и каждый индекс обычно представляет отдельный вид приоритетных отношений. При использовании традиционных приоритетных очередей пришлось бы строить отдельную очередь для каждого типа отношений, поддерживать связи между ними, а так же проводить все операции над объектами во всех очередях одновременно. Очевидно, при использовании данного подхода катастрофически страдает эффективность представления.

Для решения вышеописанной проблемы была разработана K-D пирамида. Базовая форма которой не использует дополнительной памяти, требует линейное время на построение и обеспечивает мгновенный доступ к элементам, содержащимся в минимальном ключе любого измерения, логарифмическое время для вставки, удаления, или изменения любого элемента пирамиды. При необходимости, данная структура может быть расширена до двусторонней объединяемой приоритетной очереди.

Пусть дан набор элементов, содержащих k ключей key1, key2, …, keyk, где keyi вытаскивается из полностью упорядоченного множества Ki. Минимальная k-d пирамида H, основанная на этом наборе является бинарным деревом, удовлетворяющим следующим условиям:

1.H – полное бинарное дерево (т. е. Полностью исключается возможность крайних правых позиций на нижнем уровне);

2.H поддерживает порядок k-d пирамиды:

элемент в корне имеет наименьший ключ в дереве;

для каждого узла v, исключая коренной, если родительский элемент w имеет наименьшее значение ключа keyi, в растущем из него поддереве, то элемент в

v имеет наименьшее значение ключа keymod(i, k)+1 в его поддереве. Такая пирамида обладает следующими свойствами:

в k-d пирамиде, узел уровня I имеет наименьший ключ keymod(i-1, k)+1 в его поддереве.

в k-d пирамиде узел с наименьшим ключом keyi расположен на наивысшем уровне I в пирамиде.

одномерная пирамида является бинарным деревом, а двумерная с key1=-key2 для всех узлов – min-max пирамидой.

Второе свойство показывает, что k-d пирамида представляет собой приоритетную очередь, т. е. узел с наименьшим ключом извлекается из вершины пирамиды (при постоянном числе узлов).

390

Основным недостатком базовой формы k-d пирамиды является экспоненциальная сложность операции удаления элемента, т. к. при нахождении минимального ключа в корне, второй наименьший ключ может находиться где угодно среди первых k уровней потомков. Отчасти эта проблема решается следующим способом: вместо построения полного бинарного дерева для пирамиды, мы позволим каждому узлу на уровне i (mod(i, k) ≠0) иметь не более одного потомка, в то время как узлы на уровнях i (mod(i, k) =0) всё ещё могут иметь двух. В случае возможности эффективного неявного представления, каждая цепочка из k узлов может быть упакована в один узел, поэтому основное бинарное дерево всё ещё остается полным. Очевидно, что операции погружения теперь требуется только проверить только последние 2k потомков для выбора минимума. С другой стороны, высота пирамиды почти в два раза меньше, поэтому время, затрачиваемое на операцию удаления, снизилось до O(k2).

Сложность всё ещё остается довольно высокой, но по сравнению с методом представления, описанным выше (множество связанных очередей), k-d пирамида выигрывает как по эффективности представления, так и по сложности реализации.

Работа выполнена под руководством проф. каф. «Информатика и программное обеспечение» В.К. Гулакова

Е.Р. Садретдинов АНАЛИЗ МЕТОДОВ ПОИСКА ПОДОБНЫХ ДОКУМЕНТОВ

Объект исследования: методы поиска подобных документов. Результаты, полученные лично автором:проанализированы алгоритмы

интеллектуального поиска документов по подобию.

Быстрый поиск по подобию в больших объемах данных – актуальная задача для многих современных приложений, особенно это касается поиска в Интернете.

Проблема поиска подобия подразумевает под собой нахождение самого схожего документа среди большой коллекции всех данных. Корректная работа поисковых методов имеет большое значение для многих информационно-поисковых систем, таких как обнаружение схожих дубликатов, анализ плагиата, совместная фильтрация, кэширование и мультимедийный поиск, основанный на контенте. В последнее время со стремительным развитием интернета и увеличивающимся количеством данных, подлежащих обработке, возникла поисковая проблема, заключающаяся в том, как проводить быстрый поиск на сходство в больших масштабах.

Одним из самых привлекательных способов ускорить поиск подобия является использование семантического хеширования, которое способно генерировать компактные двоичные коды для большого количества документов.