Я читал Линейную Алгебру и ее Приложения, чтобы помочь понять материал информатики (главным образом машинное обучение), но я обеспокоен тем, что большая часть информации не полезна для CS. Например, знание того, как эффективно решать системы линейных уравнений, не кажется очень полезным, если вы не пытаетесь запрограммировать новый решатель уравнений. Кроме того, в книге много говорилось о размахе, линейной зависимости и независимости, когда матрица имеет обратную сторону, и о взаимосвязях между ними, но я не могу придумать никакого применения этого в CS. Итак, какие части линейной алгебры используются в CS?
15
Ответы:
Части, которые вы упомянули, являются основными понятиями линейной алгебры. Вы не можете понять более продвинутые понятия (скажем, собственные значения и собственные векторы), прежде чем вначале поймете основные понятия. В математике нет ярлыков. Без интуитивного понимания концепций диапазона и линейной независимости вы не сможете продвинуться далеко вперед в линейной алгебре.
Некоторые алгоритмы работают только с матрицами полного ранга. Вы знаете, что это значит? Знаете ли вы, что может сделать матрицу не полным рангом? Как справиться с этим? Вы не будете иметь понятия, если не знаете, что такое линейная независимость.
Алгоритм исключения Гаусса, который используется для решения линейных уравнений, может на самом деле быть численно нестабильным, если он реализован неправильно, и в некоторых случаях вам, возможно, придется беспокоиться об этом. Без понимания алгоритма вы не узнаете, откуда возникла проблема и можете ли вы что-то с этим сделать - не на уровне алгоритмов для решения линейных уравнений, а на уровне принятия правильных линейных уравнений для решения.
Короче говоря, не ленись и поверь, что эти вещи полезны.
источник
Линейная алгебра иногда чрезвычайно полезна и мощна в алгоритмах графа. С помощью теоремы о матричном дереве вы можете эффективно подсчитать количество остовных деревьев в графе (вам нужно понять собственные значения). Более сложным приложением, где требуется еще более четкое представление о линейной алгебре, является алгоритм FKT для вычисления количества совершенных совпадений в плоском графе за полиномиальное время.
Есть много более интересных примеров использования линейной алгебры в алгебраической теории графов и спектральной теории графов . Возникающие алгоритмы предназначены не только для подсчета проблем, как два примера, которые я привел. Например, вы также можете проверить подключение или рассчитать диаметр графика .
источник
Одним из наиболее известных применений линейной алгебры является алгоритм Google Pagerank :
источник
Почти все, что связано с компьютерной графикой, анимацией, компьютерным зрением, обработкой изображений, научными вычислениями или моделированием физических явлений, будет включать широкое использование векторов и матриц (линейная алгебра) от простых вещей, таких как представление пространственных преобразований и ориентаций, до очень сложных алгоритмов. Эти вещи когда-то были областью суперкомпьютеров, но теперь те же самые области являются ядром всех самых крутых приложений на вашем настольном компьютере, телефонах и везде, от видеоигр до компьютерной фотографии и автомобилей с автоматическим управлением. Линейная алгебра есть везде.
источник
Существует множество алгоритмов и методов, основанных на матричной алгебре. И это здорово. Анализ главных компонент является примером некоторой довольно полезной прикладной линейной алгебры. То же самое можно сказать о анализе Фурье, который также имеет свои корни в ортогональности и внутренних продуктах. Так что есть прямые приложения.
НО , что еще более важно, использование класса линейной алгебры ценно, потому что оно учит вас мыслить определенным образом. Большинство хороших классов линейной алгебры делают упор на обобщение, логику и доказательства. Является ли что-то правдой в целом или только в некоторых конкретных общих случаях? Как вы можете быть уверены? Уметь думать о том, как доказать свои предположения, хорошо, потому что это помогает вам не делать неверных предположений и писать код, который не обобщается так, как вы предполагаете. Это также поможет вам подумать о том, как обобщать вещи, которые в противном случае было бы трудно обобщить, и которые позволят вам решать более серьезные проблемы.
Таким образом, хорошо иметь в виду, что линейная алгебра хороша, потому что это поднятие тяжестей для части вашего мозга, которая полезна в информатике.
источник
Решение системы линейных уравнений (что можно сделать с помощью метода исключения Гаусса), линейное программирование (которое можно решить с помощью симплекс-метода), метод наименьших квадратов и сжатие (см. Статью в Википедии) - практические проблемы, которые возникают во многих области применения. Линейная алгебра помогает в разработке правильных и эффективных алгоритмов для этих задач.
См. Текст [Cormen, Leiserson, Rivest and Stein, «Введение в алгоритмы, третье издание»], где глава 28 посвящена матричным операциям, а глава 29 - линейному программированию.
источник