Введение

Теоретическая информатика — это подраздел информатики и математики, который фокусируется на абстрактных и математических основах вычислений, таких как теория вычислений, теория формальных языков, лямбда-исчисление и теория типов. Точно определить границы теоретических областей сложно. Специальная группа ACM по алгоритмам и теории вычислений (SIGACT) дает следующее определение:

Алгоритмы

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

Теория автоматов

Теория автоматов — это изучение абстрактных машин и автоматов, а также вычислительных задач, которые могут быть решены с их использованием. Это раздел теоретической информатики, входящий в область дискретной математики (раздел математики и информатики). Слово «автомат» происходит от греческого αὐτόματα, означающего «самодействующий». Теория автоматов изучает саморегулируемые виртуальные машины, помогая логически понять процессы ввода и вывода, как без промежуточных этапов вычислений, так и с ними (или любой функции/процесса).

Теория кодирования

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

Теория вычислительной сложности

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

Вычислительная геометрия

Вычислительная геометрия — это область компьютерных наук, посвященная изучению алгоритмов, которые могут быть выражены в терминах геометрии. Некоторые чисто геометрические задачи возникают в процессе изучения алгоритмов вычислительной геометрии, и эти задачи также рассматриваются как часть вычислительной геометрии. Основным импульсом для развития вычислительной геометрии как дисциплины стал прогресс в компьютерной графике и системах автоматизированного проектирования и производства (CAD/CAM), однако многие задачи вычислительной геометрии носят классический характер и могут быть порождены математической визуализацией. Другие важные области применения вычислительной геометрии включают в себя робототехнику (планирование траекторий и задачи видимости), географические информационные системы (ГИС) (геометрическое определение местоположения и поиск, прокладка маршрутов), проектирование интегральных схем (проектирование и верификация геометрии ИС), инженерный анализ с использованием компьютера (CAE) (генерация сеток), компьютерное зрение (3D-реконструкция).

Теория вычислительного обучения

Теоретические результаты в машинном обучении в основном посвящены типу индуктивного обучения, называемому обучением с учителем. В обучении с учителем алгоритму предоставляются образцы, размеченные определенным полезным образом. Например, образцами могут быть описания грибов, а метками – информация о том, съедобны ли эти грибы. Алгоритм использует эти предварительно размеченные образцы для построения классификатора. Этот классификатор представляет собой функцию, которая присваивает метки образцам, включая те, которые алгоритм ранее не видел. Цель алгоритма обучения с учителем – оптимизировать некоторую меру производительности, например, минимизировать количество ошибок при классификации новых образцов.

Вычислительная теория чисел

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

Криптография

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

Структуры данных

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

Распределенные вычисления

Распределенные вычисления изучают распределенные системы. Распределенная система — это программная система, в которой компоненты, расположенные на сетевых компьютерах, взаимодействуют и координируют свои действия посредством обмена сообщениями. Компоненты взаимодействуют друг с другом для достижения общей цели. Три ключевые характеристики распределенных систем: конкурентность компонентов, отсутствие единого глобального времени и независимость отказов компонентов. Существует множество вариантов реализации механизма передачи сообщений, включая коннекторы типа RPC и очереди сообщений. Важной целью и сложной задачей распределенных систем является прозрачность расположения.

Информационная сложность

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

Формальные методы

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

Теория информации

Теория информации — это раздел прикладной математики, электротехники и информатики, занимающийся количественным определением информации. Она была разработана Клодом Э. Шенноном для определения фундаментальных пределов операций обработки сигналов, таких как сжатие данных, а также для обеспечения надежного хранения и передачи данных. С момента своего возникновения теория информации расширила сферу применения и нашла применение во многих других областях, включая статистический вывод, обработку естественного языка, криптографию, нейробиологию, эволюцию и функционирование молекулярных кодов, выбор моделей в статистике, термофизику, квантовые вычисления, лингвистику, выявление плагиата, распознавание образов, обнаружение аномалий и другие формы анализа данных. Применение фундаментальных принципов теории информации включает в себя сжатие данных без потерь (например, ZIP-файлы), сжатие данных с потерями (например, MP3 и JPEG) и кодирование каналов (например, для цифровых абонентских линий (DSL)). Эта область находится на стыке математики, статистики, информатики, физики, нейробиологии и электротехники. Её влияние было решающим для успеха миссий "Вояджер" в дальний космос, изобретения компакт-диска, возможности создания мобильных телефонов, развития Интернета, изучения лингвистики и человеческого восприятия, понимания чёрных дыр и многих других областей. Важными подразделениями теории информации являются кодирование источников, кодирование каналов, теория алгоритмической сложности, алгоритмическая теория информации, информационно-теоретическая безопасность и меры информации.

Машинное обучение

Машинное обучение — это научная дисциплина, которая занимается созданием и изучением алгоритмов, способных обучаться на данных. Такие алгоритмы работают, строя модель на основе входных данных и используя её для прогнозирования или принятия решений, а не следуя только явно запрограммированным инструкциям. Машинное обучение можно рассматривать как подраздел информатики и статистики. Оно тесно связано с искусственным интеллектом и оптимизацией, которые предоставляют методы, теорию и области применения для этой области. Машинное обучение применяется в широком спектре вычислительных задач, где разработка и программирование чётких алгоритмов, основанных на правилах, не представляется возможным. Примеры применения включают фильтрацию спама, оптическое распознавание символов (OCR), поисковые системы и компьютерное зрение. Машинное обучение иногда путают с интеллектуальным анализом данных, хотя последний больше ориентирован на разведочный анализ данных. Машинное обучение и распознавание образов "можно рассматривать как две стороны одной медали".

Параллельные вычисления

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

Теория языка программирования и семантика программы

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

Квантовые вычисления

Квантовый компьютер – это вычислительная система, использующая квантовомеханические явления, такие как суперпозиция и запутанность, для выполнения операций с данными. Квантовые компьютеры отличаются от цифровых компьютеров, основанных на транзисторах. Если цифровые компьютеры требуют кодирования данных в двоичные цифры (биты), каждая из которых всегда находится в одном из двух определенных состояний (0 или 1), то квантовые вычисления используют кубиты (квантовые биты), которые могут находиться в суперпозиции состояний. Теоретической моделью является квантовая машина Тьюринга, также известная как универсальный квантовый компьютер. Квантовые компьютеры имеют теоретическое сходство с недетерминированными и вероятностными компьютерами; одним из примеров является способность находиться в более чем одном состоянии одновременно. Область квантовых вычислений была впервые представлена Юрием Маниным в 1980 году и Ричардом Фейнманом в 1982 году. Квантовый компьютер со спинами в качестве квантовых битов также был разработан для использования в качестве квантового пространства-времени в 1968 году. Проводились эксперименты, в ходе которых квантовые вычислительные операции выполнялись на очень небольшом количестве кубитов. Продолжаются как практические, так и теоретические исследования, и многие национальные правительства и военные ведомства финансируют исследования в области квантовых вычислений для разработки квантовых компьютеров как для гражданских, так и для целей национальной безопасности, например, для криптоанализа.

Символические вычисления

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

Очень масштабная интеграция

Очень крупномасштабная интеграция (VLSI) — это процесс создания интегрированной схемы (ИС) путем объединения тысяч транзисторов в один чип. VLSI началась в 1970-х годах, когда разрабатывались сложные полупроводниковые и коммуникационные технологии. Микропроцессор является устройством, созданным по технологии VLSI. До появления технологии VLSI большинство ИС имели ограниченный набор выполняемых функций. Электронная схема могла состоять из центрального процессора, ПЗУ, оперативной памяти и дополнительной логики. VLSI позволяет производителям ИС объединять все эти схемы в один чип.