Структура данных и алгоритма. Ч1

Data Structures and Algorithms


Асимптотический анализ

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

Основные оценки роста, встречающиеся в асимптотическом анализе:

  • Ο (Ο-большое) – верхняя асимптотическая оценка роста временной функции;
  • Ω (Омега) – нижняя асимптотическая оценка роста временной функции;
  • Θ (Тета) – нижняя и верхняя асимптотические оценки роста временной функции.

Пусть n – величина объема данных. Тогда рост функции алгоритма f(n) можно ограничить функций g(n) асимптотически:

Обозначение Описание
f(n) ∈ Ο(g(n)) f ограничена сверху функцией g с точностью до постоянного множителя
f(n) ∈ Ω(g(n)) f ограничена снизу функцией g с точностью до постоянного множителя
f(n) ∈ Θ(g(n)) f ограничена снизу и сверху функцией g

Например, время уборки помещения линейно зависит от площади этого самого помещения (Θ(S)), т. е. с ростом площади в n раз, время уборки увеличиться также в n раз. Поиск имени в телефонной книге потребует линейного времени Ο(n), если воспользоваться алгоритмом линейного поиска, либо времени, логарифмически зависящего от числа записей (Ο(log2(n))), в случае применения двоичного поиска.

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

Под фразой «сложность алгоритма есть Ο(f(n))» подразумевается, что с увеличением объема входных данных n, время работы алгоритма будет возрастать не быстрее, чем некоторая константа, умноженная на f(n).

Важные правила асимптотического анализа:

Ο(k*f) = Ο(f) постоянный множитель k (константа) отбрасывается, поскольку с ростом объема данных, его смысл теряется, например: Ο(9,1n) = Ο(n)
Ο(f*g) =Ο(f)*Ο(g) оценка сложности произведения двух функций равна произведению их сложностей, например:
Ο(5n*n) = Ο(5n)*Ο(n) = Ο(n)*Ο(n) = Ο(n*n) = Ο(n2)
Ο(f/g)=Ο(f)/Ο(g) оценка сложности частного двух функций равна частному их сложностей, например:Ο(5n/n) = Ο(5n)/Ο(n) = Ο(n)/Ο(n) = Ο(n/n) = Ο(1)
Ο(f+g) равна доминанте Ο(f) и Ο(g)оценка сложности суммы функций определяется как оценка сложности доминанты первого и второго слагаемых, например:Ο(n5+n10) = Ο(n10)

Порядок роста

Порядок роста описывает то, как сложность алгоритма растет с увеличением размера входных данных. Чаще всего он представлен в виде Ο-нотации (от нем. «Ordnung» — порядок) : Ο(f(x)), где f(x) — формула, выражающая сложность алгоритма. В формуле может присутствовать переменная n, представляющая размер входных данных.

Константный — Ο(1)

Порядок роста O(1) означает, что вычислительная сложность алгоритма не зависит от размера входных данных. Следует помнить, однако, что единица в формуле не значит, что алгоритм выполняется за одну операцию или требует очень мало времени. Он может потребовать и микросекунду, и год. Важно то, что это время не зависит от входных данных.

Линейный — O(n)

O(n) — линейная сложность
Такой сложностью обладает, например, алгоритм поиска наибольшего элемента в не отсортированном массиве. Нам придётся пройтись по всем n элементам массива, чтобы понять, какой из них максимальный.

Логарифмический – O( log n)

O(log n) — логарифмическая сложность
Простейший пример — бинарный поиск. Если массив отсортирован, мы можем проверить, есть ли в нём какое-то конкретное значение, методом деления пополам. Проверим средний элемент, если он больше искомого, то отбросим вторую половину массива — там его точно нет. Если же меньше, то наоборот — отбросим начальную половину. И так будем продолжать делить пополам, в итоге проверим log n элементов.

Линеарифметический — O(n·log n)

Линеарифметический (или линейно-логарифмический) алгоритм имеет порядок роста O(n·log n). Некоторые алгоритмы типа «разделяй и властвуй» попадают в эту категорию. В следующих частях мы увидим два таких примера — сортировка слиянием и быстрая сортировка.

Квадратичный — O(n2)

O(n2) — квадратичная сложность
Такую сложность имеет, например, алгоритм сортировки вставками. В канонической реализации он представляет из себя два вложенных цикла: один, чтобы проходить по всему массиву, а второй, чтобы находить место очередному элементу в уже отсортированной части. Таким образом, количество операций будет зависеть от размера массива как n * n, т. е. n2.

Наилучший, средний и наихудший случаи

Что мы имеем в виду, когда говорим, что порядок роста сложности алгоритма — O(n)? Это усредненный случай? Или наихудший? А может быть, наилучший?

Обычно имеется в виду наихудший случай, за исключением тех случаев, когда наихудший и средний сильно отличаются. К примеру, мы увидим примеры алгоритмов, которые в среднем имеют порядок роста O(1), но периодически могут становиться O(n) (например, ArrayList.add). В этом случае мы будем указывать, что алгоритм работает в среднем за константное время, и объяснять случаи, когда сложность возрастает.

Самое важное здесь то, что O(n) означает, что алгоритм потребует не более n шагов.

Сложность основных алгоритмов сортировки и работы с данными

Источники:
https://tproger.ru/translations/algorithms-and-data-structures/
https://tproger.ru/articles/computational-complexity-explained/
http://kvodo.ru/asymptotic-analysis.html

Дополнительные полезные материалы:
https://www.lektorium.tv/lecture/13926

Нравиться? Жми сюда!

Привет, мир!

Добро пожаловать на сайт «Бизнес-информатика ЭУ-359». Теперь и я студент ВШЭУ ЮУрГУ, УРА! 🙂

Нравиться? Жми сюда!

Плагин Mistape. Разбор, особенности, установка.

Mistape — плагин, который позволяет пользователям отсылать сообщения об обнаруженных ими орфографических ошибках.

Преимущества Mistape:

  • Mistape — это отдельный плагин для WordPress. Он устанавливается так же, как и все остальные плагины.
  • Сразу после установки плагин готов к использованию. Это понравится новичкам, только начавшим знакомиться с WordPress — все установки уже сделаны.
  • Для опытных пользователей есть раздел настроек плагина, в котором они могут настроить почти все параметры.
  • Mistape не связан со сторонними сайтами, он не передает ваши данные за пределы сайта.
  • Плагин может не создавать внешних ссылок (определяется на странице настроек) и может работать без использования дополнительных изображений.
  • Плагин защищен от спама.

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

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

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

Для того, чтобы посетитель мог отослать сообщение об обнаруженной им ошибке, он должен выделить текст, содержащий ошибку, и нажать Ctrl + Enter.

Появится сообщение о том, что сообщение было отправлено.

Есть особенность, о которой не говорится в справке плагина — не всегда работает Ctrl с правой стороны. С чем это связано известно, наверное, только лишь разработчикам, но я советую в информационном тексте указывать, что нужно нажимать !левый! Ctrl + Enter.

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

Как видите, плагин Mistape чрезвычайно легок и удобен в использовании — все параметры настраиваются, вы можете использовать как картинку, так и текст, вам ничего не придется внедрять руками, ваши данные никуда не будут отправляться. Согласитесь, что это очень удобно и безопасно.

Скачать плагин можно здесь!

Правила установки:
1) Откройте плагин "Mistape" в административной консоли вашего сайта и нажмите "Установить". В качестве альтернативы можно скачать ZIP архив от WordPress.org Plugin Directory, и извлечь его содержимое в  корневую папку wp-content/plugins directory.
2)Активируйте плагин и следуйте настройкам, которые будут показаны в верхней части экрана. Отметьте нужные флажки, сохраняйте все и готово! Плагин установлен!

 

Нравиться? Жми сюда!

Плагин Multilingual-press. Разбор, особенности и установка.

Плагин Multilingual Press позволяет создать сеть сайтов на одном домене. Плагин в основном создан лишь для создания мультиязычности сайта, но есть и более пригодные для этого плагины. Зато, плагин очень подойдет для сайтов со статьями различных тематик, ввиду возможности создать для каждого сайта в сетке свой дизайн.

Установка:

  1. Зайдите в плагины.
  2. Добавить новый.
  3. Загрузить.
  4. Выберите архив с плагином и нажмите «установить».
  5. Нажать «активировать» в появившемся окне с установкой данного плагина.
  6. Вставляем код в wp-config.php (главное не в конец, после комментариев)
    /* Multisite */
    define('WP_ALLOW_MULTISITE', true);
  7. Деактивируйте все плагины.
  8. Инструменты->установка сети. Вводи название сети и eMail.
  9. Вставляем полученный код в wp-config.php и .htaccess .
  10. Перезаходим и готово!

Скачать данный плагин можно вот здесь.

Нравиться? Жми сюда!

Бизнес-информатика is cool!!! Часть 3

Допустим, через несколько лет я закончу университет по специальности "Бизнес-информатика". Куда мне пойти работать? Хороший вопрос, не так ли? Но уже сейчас ответить мне сможет один интересный сайт , на котором размещена информация о различных профессиях настоящего и будущего!

Больше всего меня заинтересовали профессии, связанные с робототехникой и машиностроением, т.к данная сфера уже начала активно развиваться и имеет светлое будущее. Итак, не будем долго размышлять, что же мне советует Атлас?

1 . ПРОЕКТИРОВЩИК ДОМАШНИХ РОБОТОВ

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

2. ПРОЕКТИРОВЩИК НЕЙРОИНТЕРФЕЙСОВ ПО УПРАВЛЕНИЮ РОБОТАМИ

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

3.ОПЕРАТОР МНОГОФУНКЦИОНАЛЬНЫХ РОБОТОТЕХНИЧЕСКИХ КОМПЛЕКСОВ

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

4. ПРОЕКТИРОВЩИК ДЕТСКОЙ РОБОТОТЕХНИКИ

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

5. ПРОЕКТИРОВЩИК МЕДИЦИНСКИХ РОБОТОВ

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

 

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

Нравиться? Жми сюда!

Бизнес-информатика is cool!!! Часть 2

Итак, когда мы выпустимся со специальности «Бизнес-информатика», то  сможем ли получить как можно больше таких навыков? Давайте рассмотрим подробно каждый навык, которым должен обладать работник будущего по мнению работодателей. Все навыки взяты из Итогового отчета форсайта АСИ:
1.Мультиязычность и мультикультурность (свободное владение английским и знание второго языка, понимание национального и культурного контекста стран-партнеров, понимание специфики работы в отраслях в других странах).
2.Навыки межотраслевой коммуникации (понимание технологий, процессов и рыночной ситуации в разных смежных и несмежных отраслях).
3.Клиентоориентированность, умение работать с запросами потребителя.
4.Умение управлять проектами и процессами.
5.Работа в режиме высокой неопределенности и быстрой смены условий задач (умение быстро принимать решения, реагировать на изменение условий работы, умение распределять ресурсы и управлять своим временем).
6.Способность к художественному творчеству, наличие развитого эстетического вкуса.
7.Умение работать с коллективами, группами и отдельными людьми.
8.Программирование ИТ решений / Управление сложными автоматизированными комплексами / Работа с искусственным интеллектом.
9.Системное мышление (умение определять сложные системы и работать с ними. В том числе системная инженерия).
10.Бережливое производство, управление производственным процессом, основанное на постоянном стремлении к устранению всех видов потерь, что предполагает вовлечение в процесс оптимизации бизнеса каждого сотрудника и максимальную ориентацию на потребителя.
11.Экологическое мышление.

Если посмотреть Государственный образовательный стандарт по направлению подготовки Бизнес-информатика, то с уверенностью можно сказать, что всем этим навыкам нас научат, и мы без проблем сможем заниматься той деятельностью, которая нам нравится и которая наиболее актуальна в наше время и будет популярна в ближайшем будущем!

Нравиться? Жми сюда!

Бизнес-информатика is cool!!! Часть 1

Мы живем в постиндустриальном обществе, а это значит, что современный мир постоянно совершенствуется и стремительно идет в будущее. Каждый день придумываются новые технологии, изобретаются лекарства от различных болезней и т.п. Логично, что с появлением новаций образуются новые профессии. И тут возникает вопрос: "Что же нужно, чтобы занять рабочее место в современном мире?"

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

1.Системное мышление
2.Межотраслевая коммуникация
3.Управление проектами
4.Бережливое производство
5.Программировани/Робототехника/Искусственный интеллект
6.Клиентоориентированность
7.Мультиязычность и мультикультурность
8.Работа с людьми
9.Работа в условиях неопределенности
10.Навыки художественного творчества
11.Экологическое мышление

Конечно, не везде выставляют такие критерии, но если выполнять хотя бы некоторые условия из этого списка, то это может значительно повысить Ваш авторитет в компании и привести к успеху как Вас самих, так и ваших начальников!

Нравиться? Жми сюда!

Обзор на плагин "Expire Sticky Posts"

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

Способ установки:

  1. Активировать плагин
  2. Добавить дату истечения срока действия в любой записи, чтобы "годность" записи истекала в определенный момент времени.

Нравиться? Жми сюда!

Обзор на плагин "Email Encoder Bundle - Protect Email Address"

Данный плагин выполняет следующие функции:

кодирование: mailto-ссылок, адресов электронной почты, номеров телефонов и любой текст, чтобы скрыть их от (спама)ботов.

Mailto-ссылки будут защищены автоматически.

Инструкция по установке и настройке плагина:

  1. Зайти в "Плагины" в меню-консоли
  2. Нажмите на кнопку "Добавить новый"
  3. Поиск по "Электронной почте кодированного пакета" и нажмите кнопку "Установить сейчас" или нажмите на "Загрузить" ссылку email_encode_bundle.zip
  4. Нажмите на кнопку "Активировать плагин"
    screenshot-1

Консольные параметры страницы
screenshot-2Проверить закодированное письмо при регистрации в качестве пользователя admin
screenshot-3Написать шифратор-форму на сайте

Особенности плагина:

Защита mailto-ссылок и адресов электронной почты
Защита номера телефона (или любой текст или HTML)
Также поддерживает специальные символы, как é â, ö, китайские иероглифы и так далее
Также защита вашего RSS-каналов
Использование шорт-кодов и шаблонных функций
Использование кодер-формы, возможность вручную создавать закодированные скрипты

Простота в использовании:

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

Нравиться? Жми сюда!

Почему же я выбрал бизнес-информатику?

Итак, прошло довольно много времени с начала учебного года и я сделал много выводов о жизни в университете. Это довольно сложно, если забрасывать и оставлять на последний момент все задания, но если сдавать все вовремя, то проблемы мигом исчезают и учеба становится сказкой!
Когда я сдавал экзамены, то даже не думал связывать свою жизнь с информатикой, но заметив данную специальность, я подумал, что может стоит попробовать. Поступая сюда я не знал на что иду, все было в новинку, все было интересным, но с первого взгляда было очень трудно сделать выводы о данном заведении. Сейчас я могу сказать несколько слов о бизнес-информатике. Итак, эта специальность относится к категории "сложно, но можно". Множество непонятных работ с компьютером, программами и кодами, сайтами, обычно, мне нравятся такие дела. Также очень радует, что все предметы идут по специальности уже с 1 семестра, это прям РАДУЕТ!!! Очень трудно составлять такие длинные тексты, но мне кажется, что основную мысль я донес. Нам еще предстоит много всего пройти и узнать и я считаю, что с выбором не ошибся!

dfdfdf

1 нравится это