Скачать 1.56 Mb.
|
^ В лекции представлен альтернативный подход к разработке ИИС, основанный на концепции обучения искусственных нейронных сетей. Рассмотрены основные типы и архитектура нейронных сетей, методы адаптации, обучения и настройки параметров. Модель искусственного нейрона. Искусственная нейронная сеть (ИНС) - это упрощенная модель биологичес-кого мозга, точнее нервной ткани. Нервная система человека, построенная из элементов, называемых нейронами, имеет поразительную сложность. Около 1011 нейронов участвуют в примерно 1015 передающих связях, имеющих длину метр и более. Каждый нейрон обладает многими качествами, общими с другими элемента-ми тела, но его уникальной способностью является прием, обработка и передача электрохимических сигналов по нервным путям, которые образуют коммуникацион-ную систему мозга. Структура пары типичных биологических нейронов показана на рис. 39. Нейрон состоит из тела (сомы), содержащего ядро, и отростков - дендритов, по которым в нейрон поступают входные сигналы. Один из отростков, ветвящийся на конце, служит для передачи выходных сигналов данного нейрона другим нервным клеткам. Он называется аксоном. Соединение аксона с дендритом другого нейрона называется синапсом. Нейрон возбуждается и передает сигнал через аксон, если число пришедших по дендритам возбуждающих сигналов больше, чем число тормозящих. Несмотря на то, что у этой функциональной схемы нейрона много усложнений и исключений, большинство искусственных нейронных сетей моделируют лишь эти простые свойства. ![]() Рис. 39. Биологический нейрон. Искусственный нейрон (рис. 40), далее просто нейрон, задается совокупностью своих входов, обозначенных ![]() ![]() ![]() ![]() ![]() Сигнал NET преобразуется функцией активации F и дает выходной сигнал нейрона ![]() ![]() Рис. 41. Искусственный нейрон с активационной функцией F. На рис. 41 блок, обозначенный F, принимает сигнал NET и выдает сигнал OUT. Если блок F сужает диапазон изменения величины NET так, что при любых значениях NET значения OUT принадлежат некоторому конечному интервалу, то F называется «сжимающей» функцией. В качестве «сжимающей» функции часто используется сигмоидальная (S-образная) функция, показанная на рис. 42. ![]() Рис. 42. Сигмоидальная функция. Эта функция имеет вид: ![]() ![]() Рис. 43. Функция гиперболического тангенса. Простейшими формами функции активации являются линейная и ступенчатая (пороговая) функции. Линейная функция активации дифференцируема и легко вычисляется, что в ряде случаев позволяет уменьшить ошибки выходных сигналов в ИНС. Однако она не универсальна и не обеспечивает решение многих плохо формализованных задач. Ступенчатая функция обычно задается в виде единичной функции с жесткими ограничениями: она равна нулю, если NET < 0, и единице, если NET ![]() Модели нейронных сетей. Нейронная сеть представляет собой совокупность искусственных нейронов, организованных слоями. Реальная нейронная сеть может содержать один или большее количество слоев и соответственно характеризоваться как однослойная или как многослойная, с обратными связями и без них. Многослойные сети отличаются от однослойных тем, что между входными и выходными данными располагаются несколько так называемых скрытых слоев нейронов, добавляющих больше нелинейных связей в модель. Простейшая сеть состоит из группы нейронов, образующих один слой (рис. 44). На рисунке вершины - круги слева служат лишь для распределения входных сигналов. Они не выполняют каких - либо вычислений, и поэтому не будут считаться слоем. По этой причине они обозначены кругами, чтобы отличать их от вычисляющих нейронов, обозначенных квадратами. Каждый элемент из множества входов Х отдельным весом соединен с каждым искусственным нейроном, и каждый нейрон выдает взвешенную сумму входов в сеть. В искусственных и биологических сетях многие соединения могут отсутствовать, поэтому на рисунке все соединения показаны в целях общности. Многослойные сети обладают большими вычислительными возможностями, чем однослойные. Послойная организация нейронов копирует слоистые структуры определенных отделов мозга. Многослойные сети могут образовываться каскадами слоев: выход одного слоя является входом для последующего слоя. Двухслойная сеть со всеми соединениями показана на рис. 45. Если функция активации является линейной, то нейронная сеть также будет линейной. Двухслойная линейная сеть эквивалентна одному слою с весовой матрицей, равной произведению двух весовых матриц, то есть ![]() ![]() Рис. 44. Однослойная нейронная сеть ![]() Рис. 45. Двухслойная нейронная сеть. По архитектуре связей нейронные сети могут быть сгруппированы в два класса: сети прямого распространения, в которых обратные связи отсутствуют (нет соединений, идущих от выходов некоторого слоя к входам этого же слоя или предшествующих слоев) и сети рекуррентного типа, в которых возможны обратные связи. В сетях прямого распространения нет памяти, их выход полностью определяется текущими входами и значениями весов. Сети прямого распространения подразделяются на однослойные перцепротроны (сети) и многослойные перцептроны (сети). Название перцептрон для нейросетей введено Ф. Розенблаттом, разработчиком первой нейросети (1957 г.). Он же доказал схо-димость области решений для перцептрона при его обучении. Реккурентные сети могут обладать свойствами, сходными с кратковременной человеческой памятью. Класс рекуррентных нейронных сетей гораздо обширнее и сложнее по своему устройству. Поведение рекуррентных сетей описывается дифференциальными или разностными уравнениями, как правило, первого порядка. Это гораздо расширяет области применения нейросетей и способы их обучения. Сеть организована так, что каждый нейрон получает входную информацию от других нейронов, возможно, и от самого себя, и от окружающей среды. Этот тип сетей имеет важное значение для моделирования нелинейных динамических систем. Среди рекуррентных сетей можно выделить сети Хопфилда и сети Кохонена. При всем многообразии возможных конфигураций ИНС на практике получили распространение лишь некоторые из них. Классическим моделями нейронных сетей являются:
Структура ИНС, включая определение числа слоев и числа нейронов в каждом слое, формируется до начала обучения, поэтому успешное решение этой проблемы во многом зависит от опыта и искусства аналитика, проводящего исследование. Обучение нейронных сетей. Главное отличие и преимущество нейросетей перед классическими средствами прогнозирования и классификации заключается в их способности к обучению. На этапе обучения происходит вычисление синаптических коэф-фициентов в процессе решения нейронной сетью задач, в которых нужный ответ определяется не по правилам, а с помощью примеров, сгруппированных в обучающие множества. Нейросеть на этапе обучения сама выполняет роль эксперта в процессе подготовки данных для построения экспертной системы. Предпола-гается, что правила находятся в структуре обучающих данных. Такие данные представляют собой ряды примеров с указанием для каждого из них значения выходного параметра, которое было бы желательно получить. Действия, которые при этом происходят, можно назвать обучение с учителем. На вход сети подается вектор исходных данных, а на выходной узел сообщается желаемое значение результата вычислений. Контролируемое обучение нейросети можно рассматривать как решение оптимизационной задачи. Ее целью является минимизация функции ошибок на данном множестве примеров путем выбора значений весов W. Достижение минимума называется сходимостью процесса обучения. Поскольку ошибка зависит от весов нелинейно, получить решение в аналитической форме невозможно, и поиск глобального минимума осуществляется посредством итерационного процесса, так называемого обучающего алгоритма. В настоящее время используются более сотни разных обучающих алгоритмов, отличающихся друг от друга стратегией оптимизации и критерием ошибок. Обычно в качестве меры погрешности берется средняя квадратичная ошибка ![]() где M – число примеров в обучаемом множестве. Среди обучающих алгоритмов наиболее распространенным является алгоритм обратного распространения ошибок. Согласно методу перед началом обучения сети всем межнейронным связям присваиваются небольшие случайные значения весов. Каждый шаг обучающей процедуры состоит из двух фаз. Во время первой фазы входные элементы сети устанавливаются в заданное состояние. Входные сигналы распространяются по сети, порождая некоторый выходной вектор. При этом используются сигмоидальные функции активации. Полученный выходной вектор сравнивается с требуемым (правильным) вектором. Если они совпадают, то весовые коэффициенты связей не изменяются. В противном случае вычисляется разница между фактическими и требуемыми выходными значениями, которая передается последовательно от выходного слоя к входному слою. На основе этой информации проводится модификация весов связей в соответствии с формулой: ![]() где ![]() Общая ошибка функционирования сети определяется по формуле: ![]() где ![]() ![]() Когда величина ошибки достигает приемлемо малого уровня, обучение останавливают, и сеть готова к выполнению возложенных на нее задач. Важно отметить, что вся информация, которую сеть приобретает о задаче, содержится в наборе примеров. Поэтому качество обучения сети зависит от количества примеров в обучающей выборке, а также от того, насколько полно эти примеры описывают задачу. Считается, что для полноценной тренировки требуется хотя бы несколько десятков (а лучше сотен) примеров. Если не для всех примеров обучающей выборки известны правильные ответы, то обучение сети проводится без учителя. В этом случае применение самонастраивающихся сетей Кохонена дает возможность определить внутреннюю структуру поступающих в сеть данных и распределить образцы по категориям. Несмотря на многочисленные успешные применения алгоритма обратного распространения при обучении ИНС, у него есть недостатки. Больше всего неприятностей приносит неопределенно долгий процесс обучения. В сложных задачах для обучения сети могут потребоваться дни или даже недели, она может и вообще не обучиться. Длительное время обучения может быть результатом неоптимального выбора шага сети ![]()
Способы реализации ИНС. Нейронные сети могут быть реализованы программным или аппаратным спосо-бами. Вариантом аппаратной реализации являются нейрокомпьютеры. Большинство современных нейрокомпьютеров представляют собой персональный компьютер, снабженный дополнительной нейроплатой. Повышенный интерес вызывают спе-циализированные нейрокомпьютеры, в которых реализованы принципы архитек-туры нейронных сетей. В тех случаях, когда разработка или внедрение аппаратных реализаций нейронных сетей обходится слишком дорого, применяют более дешевые программные реализации. Программу моделирования нейронной сети обычно называют программой-имитатором или нейропакетом, понимая под этим программную оболочку, эмулирующую для пользователя среду нейрокомпьютера на обычном компьютере. В настоящее время на рынке программного обеспечения имеется множество самых разнообразных программ для моделирования нейронных сетей. В них воплощены практически все известные алгоритмы обучения и топологии нейросетей. Общее число фирм, разрабатывающих эти средства, превышает 150. Несмотря на сложность заложенных в нейропакетах методов, использовать их довольно просто. Они позволяют сконструировать, обучить, протестировать и использовать в работе нейронную сеть на основе понимания нескольких базовых теоретических положений, изложенных выше. Первые подобные программные продукты появились на Западе в середине 80 -х годов XX века. Одним из лидеров этого рынка стал нейросетевой пакет BrainMaker американской фирмы California Scientific Software. В настоящее время нейрокомпь-ютерный сегмент рынка программного обеспечения бурно развивается, и появление новых пакетов – естественный процесс. Современные продукты во многом лучше своих предшественников – улучшен интерфейс пользователя, появились дополни-тельные нейропарадигмы, в пакетах реализованы возможности взаимодействия с другими приложениями посредством механизмов OLE, ActiveX и др. Плата за эти возможности использовать более мощный, чем ранее компьютер, рост требований к объему оперативной и дисковой памяти. Кроме того, новый пакет не гарантирует более качественного решения прикладной задачи пользователя. В большей степени это качество зависит от правильно поставленной задачи, выбора данных. Эффективным реальным инструментом для расчета и проектирования нейронных сетей при решении многочисленных прикладных задач во многих областях техники, в том числе электротехники и электроники, электрооборудования является пакет прикладных программ Neural Network Toolbox (ППП NNT), функциони-рующий под управлением системы Matlab версии 5.3 и 6.0. Следует также обратить внимание на интерфейс ППП NNT с системой Simulink, что позволяет наглядно отобразить архитектуру сети и выполнить моделирование как статических, так и динамических нейронных сетей. Последнее обстоятельство особенно важно при построении систем управления различными электротехническими объектами, диагностики их состояния и поведения. Лекция 9. Генетические алгоритмы. В лекции рассмотрены методы поиска оптимальных решений многокрите-риальных прикладных задач управления системами в реальном времени с исполь-зованием эволюционных аналогий. Представлены основы теории генетических алгоритмов, построенных на принципах, сходных с принципами естественного отбора и генетики. Приведены примеры решения задач, в которых показаны эффективность генетических алгоритмов. Эволюционные вычисления и традиционные методы оптимизации. Задача управления любым техническим комплексом или системой, включая электротехнические комплексы, является многокритериальной, то есть такой, в которой приходится учитывать большое число факторов. Здесь аналитику приходится оценивать множество сил, влияний интересов и последствий, характеризующих то или иное решение. Зачастую решения требуется принимать в режиме, близком к реальному времени. Принятие правильного решения заключается в выборе такого варианта из числа возможных, в котором с учетом всех разнообразных факторов и противоречивых требований будет оптимизирована некая общая ценность, то есть решение будет в максимальной степени способствовать достижению поставленной цели. В качестве критерия оценки качества принимаемого решения выступает некая целевая функция, аргументами которой являются количественные характеристики, описывающие состояние факторов, влияющих на достижение цели в решаемой задаче. При этом решению, приводящему к наилучшему результату, как правило, соответствует экстремальное значение целевой функции, то есть точка ее максимума или минимума. В основе традиционных методов оптимизации лежат математические вычисления, позволяющие находить экстремум целевой функции. Ценность каждого такого метода заключается в том, что с помощью него можно найти точку экстремума целевой функции, не перебирая всех возможных комбинаций ее аргументов. Среди многочисленных подходов можно выделить три основных типа методов поиска оптимальных решений.
Эволюционные вычисления используется для описания алгоритмов поиска, основанных на некоторых формализованных принципах естественного эволюционного процесса. Основное преимущество эволюционных вычислений заключается в возможности решения задач с большой размерностью за счет сочетания элементов случайности и детерминированности точно так, как это происходит в природной среде. Детерминированность методов заключается в моделировании природных процессов отбора, размножения и наследования, происходящих по строго определенным правилам. Основным правилом при этом является закон эволюции: «выживает сильнейший», который обеспечивает улучшение находимого решения. Другим важным фактором эффективности эволюционных вычислений является моделирование размножения и наследования. Рассматриваемые варианты решений могут по определенному правилу порождать новые решения, которые будут наследовать лучшие черты своих «предков». В качестве случайного элемента в методах эволюционных вычислений может использоваться, например, моделирование процесса мутации. В этом случае характеристики того или иного решения могут быть случайно изменены, что приведет к новому направлению в процессе эволюции решений и может ускорить процесс выработки лучшего решения. История эволюционных вычислений началась с разработки ряда независимых моделей эволюционного процесса. Среди этих моделей можно выделить три основные парадигмы – это генетические алгоритмы, эволюционные стратегии, эволюционное программирование. Отличительной особенностью генетических алгоритмов является представле-ние любой альтернативы решения в виде битовой строки фиксированной длины, манипуляции с которой производятся в отсутствие всякой связи с ее смысловой интерпретацией, то есть применяется единое универсальное представление любой задачи. Эволюционные стратегии представляют каждую из альтернатив решения единым массивом численных параметров. По существу за каждым массивом скрывается аргумент целевой функции. Воздействие на данные массивы осуществляется с учетом их смыслового содержания и направлено на улучшение значений входящих в них параметров. Эволюционное программирование основано на представлении альтернатив решений в виде моделей-автоматов, описывающих средствами формальной логики возможные переходы исследуемой системы из некоторого начального состояния в заключительное состояние. Эволюционная программа при этом реализует моделирование процессов естественной эволюции моделей-автоматов, когда в каждый момент времени сохраняется тот «организм», который может наилучшим способом справится с данной задачей. Эволюционные вычисления не гарантируют обнаружения глобального экстремума целевой функции, однако они демонстрируют эффективность решений ряда практических задач по проектированию, планированию, управлению, прогнозированию во многих областях техники. Отрицательной чертой эволю-ционных вычислений является то, что они представляют собой скорее подход к решению задач оптимизации, чем алгоритм. Вследствие этого они требуют адаптации к каждому конкретному классу задач путем выбора определенных характеристик и параметров. Генетические алгоритмы. Генетический алгоритм представляет собой поисковый алгоритм, основанный на природных механизмах селекции и генетики. Он работает с кодами безотно-сительно их смысловой интерпретации. Поэтому сам код и его структура описыва-ются понятием генотип, а его интерпретация, с точки зрения решаемой задачи, понятием фенотип. Каждый код представляет, по сути, точку пространства поиска. С целью максимально приблизиться к биологическим терминам, экземпляр кода называют хромосомой или особью. В обозначении строки кода будем использовать термин «особь». На каждом шаге работы генетический алгоритм использует несколько точек поиска одновременно. Совокупность этих точек в пространстве поиска является набором особей или популяцией. Количество особей в популяции называют размером популяции. Размер популяции является фиксированным и представляет одну из характеристик генетического алгоритма. Формирование исход-ной популяции происходит с использованием какого-либо случайного закона, на основе которого выбирается нужное количество точек поискового пространства. На каждом шаге работы генетический алгоритм обновляет популяцию путем создания новых особей и уничтожения старых. Чтобы отличать популяции на каждом из шагов и сами эти шаги, их называют поколениями и обычно идентифицируют по номеру. Например, популяция, полученная из исходной популяции после первого шага работы алгоритма, будет первым поколением, после следующего шага - вторым, и т.д. В процессе работы алгоритма генерация новых особей происходит на основе моделирования процесса размножения. При этом, естественно, порождающие особи называются родителями, а порожденные соответственно - потомками. Родительская пара, как правило, порождает пару потомков. Непосредственная генерация новых кодовых строк из двух выбранных происходит за счет работы оператора скрещивания, который также называют кроссинговером. При порождении новой популяции оператор скрещивания может применяться не ко всем парам родителей. Часть этих пар может переходить в популяцию следующего поколения непосредственно. Насколько часто будет возникать такая ситуация, зависит от значения вероятности применения оператора скрещивания, которая является одним из параметров генетического алгоритма. Вероятность применения оператора скрещивания обычно выбирается в пределах от 0,9 до 1, чтобы обеспечить появление новых особей, расширяющих пространство поиска. При значении вероятности меньше единицы часто используют особую стратегию - элитизм, которая предполагает переход в популяцию следующего поколения элиты, то есть лучших особей текущей популяции, без всяких изменений. Применение элитизма способствует сохранению общего качества популяции на высоком уровне. При этом элитные особи участвуют еще и в процессе отбора родителей для последующего скрещивания. Количество элитных особей определяется по формуле ![]() Моделирование процесса мутации новых особей осуществляется за счет работы оператора мутации. Основным параметром оператора мутации также является вероятность мутации. Поскольку размер популяции фиксирован, то порождение потомков должно сопровождаться уничтожением других особей. Выбор пар родителей из популяции для порождения потомков производит оператор отбора, а выбор особей для уничтожения - оператор редукции. Основным параметром их работы является, как правило, качество особи, которое определяется значением целевой функции в точке пространства поиска, описываемой этой особью. В основе оператора отбора лежит принцип «выживает сильнейший». Выбор особи для размножения производится случайно. Вероятность участия особи в процессе размножения определяется по формуле ![]() ![]() ![]() Таким образом, можно перечислить основные понятия и термины, используемые в области генетических алгоритмов: генотип и фенотип; особь и качество особи; популяция и размер популяции; поколение; родители и потомки. К характеристикам генетического алгоритма относятся: размер популяции; оператор скрещивания и вероятность его использования; оператор мутации и вероятность мутации; оператор отбора; оператор редукции; критерий останова. Операторы отбора, скрещивания, мутации и редукции называют еще генетическими операторами. Критерием останова работы генетического алгоритма может быть одно из трех событий:
Характеристики генетического алгоритма определяются путем подбора, обеспечивающего поиск лучшего решения задачи за малое время работы. Рассмотрим примеры применения генетических алгоритмов при решении оптимизационных задач. Пример поиска одномерной функции. Пусть имеется набор натуральных чисел от 0 до 31 и функция ![]() При решении задачи используем в качестве кода двоичное представление аргументов функции. Это положение представляет собой фенотип решаемой задачи. Сам код будет представлять собой двоичную строку из пяти бит. Это генотип алгоритма. Функция ![]()
Пусть процесс мутации заключается в инверсии одного из битов строки, выбираемого случайно по равномерному закону; вероятность оператора мутации равна 0,001; размер популяции ![]() Таблица 5 Исходная популяция из четырех особей.
Предположим, что оператор отбора выбрал для производства потомков две пары строк (1,2) и (2,4). В каждой паре разбиение на подстроки оператором скрещивания происходит независимо (табл. 6). Таблица 6 Работа оператора скрещивания
Пусть оператор мутации, несмотря на низкую вероятность 0,001, изменяет значение кода потомка в третьей строке (табл.6) с 10000 на 10001. Тогда за счет порожденных потомков популяция расширяется до восьми особей. Оператор редукции сокращает популяцию до исходного числа особей, исключая те особи, в которых значения целевой функции минимальны (табл. 7). Таблица 7. Популяция первого поколения особей.
На этом шаг работы генетического алгоритма заканчивается. Очевидно, что даже за эту одну итерацию качество популяции значительно возросло. Лучшее решение увеличилось с 18 до 27 при оптимальном решении 31. Оптимизационная задача по обучению нейронной сети. Обучение нейронных сетей является одной из основных областей применения генетических алгоритмов. Для построения и обучения нейронной сети зададим набор примеров, который представляет собой совокупность векторов вида ![]() ![]() ![]() ![]() ![]() Исходными данными для решения задачи являются количество входных и выходных нейронов; набор обучающих примеров. Требуется найти следующие характеристики нейронной сети: количество скрытых слоев; количество нейронов в каждом скрытом слое; значения весов всех входов для каждого скрытого и выходного нейрона; функции активации для каждого скрытого и выходного нейрона. Очевидно, что целевой функцией в данной задаче будет максимальное значение ![]() ![]() ![]() ![]() ![]() Таким образом, задача обучения нейронной сети сводится к задаче поиска оптимального решения. Следует заметить, что даже для простейших нейронных сетей эта задача является многомерной и крайне сложной. Цель найти нейронную сеть, удовлетворяющую условию ![]() Как правило, генетические алгоритмы используются на различных этапах построения и обучения сети в качестве основного или вспомогательного средства. Генетический алгоритм может использоваться на первом этапе работы для поиска общих параметров нейронной сети: количества скрытых слоев и нейронов. Также генетический алгоритм может использоваться на заключительном этапе работы для поиска всех значений весов нейронной сети и функций активации. Причем функции активации, как правило, выбираются из ограниченного набора, а еще чаще подбирается не сама формула функции активации, а один или несколько ее параметров. Для упрощения возьмем небольшую сеть прямого распространения (рис. 46) и построим для нее обучающий алгоритм. Сеть состоит из шести нейронов: трех входных, двух скрытых и одного выходного. ![]() Рис. 46 Нейронная сеть. Используем сигмоидальную функцию качестве функции активации ![]() ![]() где k – число примеров; ![]() ![]() Для останова работы генетического алгоритма можно указать число поколений, а можно задать условие на значение целевой функции. Например, остановить работу алгоритма, когда значение целевой функции ![]() ![]() ![]() ![]() Таблица 8 Структура кода.
Рассмотренный процесс показывает, насколько сложной является задача построения и обучения нейросети как с точки зрения ее размерности, так и с точки зрения ее вычислительной сложности. Тем не менее, генетические алгоритмы представляют один из эффективных и изящных путей ее решения. Выводы по лекции. Эволюционные вычисления, в том числе и генетические алгоритмы, представляют собой подход к решению задачи поиска лучшего решения, а не четко определенный алгоритм. Для решения конкретной задачи, помимо ее формализации, формулировки генотипа и фенотипа, требуется создавать и конкретный генетический алгоритм. Для этого задают значения размера популяции, вероятности мутации, описывают процесс работы операторов отбора, скрещивания, мутации и редукции, что и было показано в рассмотренных примерах. Однако может оказаться, что алгоритм, успешно решающий одну задачу, совершенно не подходит для решения другой. Создание генетических алгоритмов, эффективно решающих как можно большее число задач, является предметом проводимых в настоящее время исследований. |
Программа дисциплины «Базы данных и экспертные системы» для преподавателя... «Базы данных и экспертные системы» для специальности 5В073200-Стандартизация, метрология и сертификация | Методические рекомендации по изучению дисциплины Формат и политика курса «Базы данных и экспертные системы» для специальности 5В073200-Стандартизация, метрология и сертификация |
Учебно-методический комплекс дисциплины «Базы данных в системах управления» Учебно-методические материалыпо дисциплине “Базы данных в системах управления ” | Рабочая программа дисциплины “ Базы данных в системах управления... Рабочая программа дисциплины “Базы данных в системах управления” для преподавателя |
Программа дисциплины “Информационно-управляющие системы ” для преподавателя... Одобрено и рекомендовано к изданию на заседании Учебно-методического совета университета | Программа дисциплины “Клиент-серверные приложения с использованием... Одобрено и рекомендовано к изданию на заседании Учебно-методического совета университета |
Программа дисциплины «Операционные системы» для преподавателя Редакция... «Операционные системы» для специальности 5B070400-Вычислительная техника и программное обеспечение | Учебно-методическое пособие “Методы сортировок и поиска” Редакция... В этой части книги будут обсуждаться структуры данных в основной памяти и методы их использования, предназначенные для поиска данных... |
Учебно-методический комплекс дисциплины «обж» учебно-методические... Авария разрушение сооружений и (или) технических устройств, применяемых на опасном производственном объекте, неконтролируемые взрыв... | Программа дисциплины «История государства и права» учебно-методические... Автономия (греч самоуправление) – широкое внутреннее управление в определенном регионе государства |