Какие части линейной алгебры используются в информатике?

15

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

Kelmikra
источник
2
Вы спрашиваете о своей выгоде, или вы учитель, ищущий стратегии для мотивации ваших студентов?
Рафаэль
Линейная алгебра полезна во многих частях компьютерной графики (вы можете найти много связанной с поиском информации).
Юхо
Решение систем линейных уравнений невероятно полезно в информатике. Например: en.m.wikipedia.org/wiki/Combinatorial_optimization
Ant P
1
Матрицы широко используются в разработке игр, IE для проекций, вращений и математики кватернионов.
Павел
@Paulpro Вопрос для приложений линейной алгебры (совокупность работ), а не матриц (набор объектов).
Рафаэль

Ответы:

11

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

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

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

Короче говоря, не ленись и поверь, что эти вещи полезны.

Юваль Фильмус
источник
5
«поверь, что эти вещи полезны» - ну разве мы все не знаем учителей, которые загружают свои лекции своими любимыми, не заботясь об общей полезности? Студенты не могут понять разницу, но они не должны доверять вслепую. "Зачем мне это нужно?" это честный вопрос, но «Это просто для тренировки ума» - тоже справедливый ответ.
Рафаэль
9
«Не ленись» задает тон, который не является конструктивным. У меня были удивительно любознательные, помолвленные и совсем не ленивые студенты, задающие мне этот вопрос. Я думаю, что большая часть студентов CS считает классы линейной алгебры мирами, отличными от того, что, по их мнению, им нужно. Их интересы - вычисления и программирование, а не обязательно математика. Необходимость или желание некоторого контекста и мотивации не является признаком лени. Давайте не будем рисовать это так.
Логан Мэйфилд,
@ Рафаэль, Логан Мэйфилд, ребята, вы знаете, как машинное обучение связано с линейной алгеброй? Хотя Юваль немного конкретен, он довольно нагляден в приведенных им примерах. На вопрос ОП невозможно ответить только одним постом в Интернете.
musicliftsme
7

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

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

Юхо
источник
Вы задаетесь вопросом, почему кто-то хотел бы посчитать количество связующих деревьев или идеальных совпадений. Для чего это хорошо? Вы имеете в виду реальное приложение?
Юваль Фильмус
@YuvalFilmus Я не знаю, и, может быть, сложнее придумать приложения для подсчета проблем для начала. Я думаю, что оба интересны в основном с теоретической точки зрения, хотя вики-статья FKT дает некоторую историю и мотивацию. Как бы то ни было, суть в том, что линейная алгебра полезна для разработки алгоритмов графов и, таким образом, находит применение в информатике.
Юхо
6

Одним из наиболее известных применений линейной алгебры является алгоритм Google Pagerank :

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

Роберт С. Барнс
источник
3

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

Ларри Гриц
источник
2

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

НО , что еще более важно, использование класса линейной алгебры ценно, потому что оно учит вас мыслить определенным образом. Большинство хороших классов линейной алгебры делают упор на обобщение, логику и доказательства. Является ли что-то правдой в целом или только в некоторых конкретных общих случаях? Как вы можете быть уверены? Уметь думать о том, как доказать свои предположения, хорошо, потому что это помогает вам не делать неверных предположений и писать код, который не обобщается так, как вы предполагаете. Это также поможет вам подумать о том, как обобщать вещи, которые в противном случае было бы трудно обобщить, и которые позволят вам решать более серьезные проблемы.

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

Собаки
источник
0

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

См. Текст [Cormen, Leiserson, Rivest and Stein, «Введение в алгоритмы, третье издание»], где глава 28 посвящена матричным операциям, а глава 29 - линейному программированию.

Эшвин Ганесан
источник