Современные большие языковые модели, такие как GPT-5, способны практически мгновенно генерировать связные, убедительные и, на первый взгляд, осмысленные ответы на самые разнообразные запросы. Это сделало их незаменимыми помощниками в работе, учёбе и повседневной жизни [статья, статья, статья]. Однако, за кажущейся безупречностью, скрывается фундаментальная проблема: многие пользователи часто воспринимают выводы нейросетей как истину, не подвергая их критической проверке.
Раньше я не сильно задумывался о данной проблеме, пока коллеги по цеху не начали применять нейросетей для решения как рабочих, так и домашних задач, не проверяя решения нейронок. Выявилось это по результатам нескольких дискуссий, когда люди ставили под сомнение ход своих мыслей, а не ответы нейросетей.
Позже уже и сам имел опыт общения со студентом, который мечтает стать программистом и даже написал пару сайтов в рамках курсовых работ с использованием вайб-кодинга. Не зная ни синтаксиса, ни семантики языка, ни единого алгоритма или базовой конструкции вроде цикла.
Таких примеров сейчас масса. В сети много материалов, как с использованием нейросетей успешно решаются инженерные или математические задачи, сопровождающиеся громкими лозунгами о том, как ИИ скоро заменит человека. Однако, авторы как правило забывают упомянуть, что эти случаи являются именно частными примерами успешного применения, а не отражением надежной практики.
Нейросети не обладают ни пониманием реальности, ни способностью отличать факты от вымысла. Они могут убедительно излагать ошибочные суждения, опираясь на устаревшие или недостоверные источники.
Чтобы показать, почему нельзя доверять большим языковым моделям, рассмотрим решение несложной математической задачи с использованием DeepSeek, ChatGPT-4o, ChatGPT 5:
Есть 5 исполнителей и 5 видов работ. Каждый исполнитель способен выполнять каждый вид работы с эффективностью, оцениваемой от 1 до 9. Далее представлена матрица, отражающая на каком уровне эффективности каждый исполнитель способен выполнять каждый вид работ соответственно: [[7,3,6,9,5],[7,5,7,5,6],[7,6,8,8,9],[3,1,6,5,7],[2,4,9,9,5]]. Задача распределить всех исполнителей так, чтобы суммарная их эффективность была максимальной.
Исходные данные в виде матрицы представлены на рисунке 1.

Данная задача относится к типу оптимизационных задач о назначениях, которые успешно решаются Венгерским методом.
В общем виде алгоритм решения задачи выглядит следующим образом (мнемоника H – Human (человек)):
H.1.1. Определяется, к какому типу относится задача. Если задача решается на максимум, то выполняется преобразование матрицы. В каждой строке матрицы необходимо найти максимальный элемент, его же вычесть из каждого элемента соответствующей строки и умножить всю матрицу на -1. Если задача решается на минимум, то переход к шагу H.2.
H.2.1. Редукция по строкам: в каждой строке необходимо найти минимальный элемент и вычесть его из каждого элемента строки. Если минимальный элемент 0 – то строка, соответственно, не изменяется. Выполнить проверку (шаг H.N). Если решение найдено – переход к шагу H.2.4, если нет – переход к шагу H.2.2.
H.2.2. Редукция по столбцам: в каждом столбце находится минимальный элемент и вычитается из каждого элемента столбца. Выполнить проверку (шаг H.N). Если решение найдено – переход к шагу H.2.4, если нет – переход к шагу H.2.3.
H.2.3. Преобразование матрицы: вычеркиваются строки и столбцы, которые содержат нулевые элементы (количество вычеркиваний должно быть минимальным). Среди оставшихся элементов ищется минимальный, который вычитается из оставшихся элементов (которые не зачеркнуты) и прибавляется к элементам, которые расположены на пересечении вычеркнутых строк и столбцов (дважды зачеркнуты). Выполнить проверку шага N. Если решение найдено – решение задачи завершается. Переход к шагу Х. Если решение не найдено – переход к шагу 2.
H.2.4. В исходную матрицу подставляются месторасположения полученных нулей. Таким образом получается оптимальное распределение. Решение задачи завершено.
H.N. Проверка на наличие оптимального распределения. Для этого необходимо покрыть нули полученной матрицы минимальным количеством строк и столбцов. Если количество покрытий равно размеру матрицы, то найдено оптимальное решение. Если нет – продолжаем алгоритм.
Подробное описание алгоритма, рисунки и пошаговое решение указанной задачи представлено в статье. Для исходных данных (рис. 1) оптимальным решением является распределение:
Исполнитель 1 → Работа 4 (эффективность 9)
Исполнитель 2 → Работа 1 (эффективность 7)
Исполнитель 3 → Работа 2 (эффективность 6)
Исполнитель 4 → Работа 5 (эффективность 7)
Исполнитель 5 → Работа 3 (эффективность 9)
Суммарная эффективность: 9 + 7 + 6 + 7 + 9 = 38
LLM DeepSeek был дан текст задачи. В ответе LLM правильно указала, каким способом решается задача, корректно воспроизвела исходную матрицу и отобразила ее в диалоговом окне. Далее модель описала общий порядок решения данного класса задач (мнемоника D1 – DeepSeek, первый диалог):
Шаги решения:
D1.1. Преобразование матрицы:
D1.1.1. Поскольку задача заключается в максимизации, а Венгерский алгоритм работает на минимизацию, мы можем преобразовать матрицу, вычитая каждый элемент из максимального значения в матрице (в данном случае 9). Получим:
[[2, 6, 3, 0, 4],
[2, 4, 2, 4, 3],
[2, 3, 1, 1, 0],
[6, 8, 3, 4, 2],
[7, 5, 0, 0, 4]]
D1.2. Применение Венгерского алгоритма:
D1.2.1 Находим минимальный элемент в каждой строке и вычитаем его из всех элементов строки.
D1.2.2 Находим минимальный элемент в каждом столбце и вычитаем его из всех элементов столбца.
D1.2.N Покрываем нули минимальным количеством строк и столбцов. Если количество покрытий равно размеру матрицы (5), то найдено оптимальное решение. Если нет, то корректируем матрицу и повторяем процесс.Алгоритм в целом соответствует статье, однако шаг D1.1.1. отличается от шага H.1.1. После объяснения алгоритма решения нейросеть дает ответ:
Оптимальное распределение:
После выполнения всех шагов алгоритма, мы получим оптимальное распределение исполнителей по работам. Для данной матрицы оптимальное распределение будет следующим:
Исполнитель 1 → Работа 4 (эффективность 9)
Исполнитель 2 → Работа 1 (эффективность 7)
Исполнитель 3 → Работа 5 (эффективность 9)
Исполнитель 4 → Работа 3 (эффективность 6)
Исполнитель 5 → Работа 2 (эффективность 4)
Суммарная эффективность:
Суммарная эффективность будет равна: 9 + 7 + 9 + 6 + 4 = 35. Полученный результат не является оптимальным.
В новом диалоге языковой модели задана исходная задача без изменений (мнемоника D2 – DeepSeek, второй диалог). LLM снова правильно указала метод решения задачи, но представила другой алгоритм решения задачи:
D2.2.1. Для начала приведем матрицу, вычитая минимальный элемент каждой строки из всех элементов этой строки:
[[4, 0, 3, 6, 2],
[2, 0, 2, 0, 1],
[1, 0, 2, 2, 3],
[2, 0, 5, 4, 6],
[0, 2, 7, 7, 3]]
D2.2.2. Теперь приведем матрицу по столбцам, вычитая минимальный элемент каждого столбца из всех элементов этого столбца:
[[4, 0, 1, 6, 1],
[2, 0, 0, 0, 0],
[1, 0, 0, 2, 2],
[2, 0, 3, 4, 5],
[0, 2, 5, 7, 2]]
D2.2.N. Теперь найдем минимальное количество строк и столбцов, которые покрывают все нулевые элементы. В данном случае это можно сделать, например, с помощью алгоритма Куна.
D2.2.3. Если количество покрывающих строк и столбцов меньше 5, то необходимо перераспределить матрицу, чтобы увеличить количество нулевых элементов.
В данном случае это не требуется, так как все нулевые элементы уже покрыты.После этого нейросеть представляет результат:
Теперь можно назначить исполнителей на работы, используя нулевые элементы. Например:
Исполнитель 1 → Работа 2 (эффективность 3)
Исполнитель 2 → Работа 4 (эффективность 5)
Исполнитель 3 → Работа 3 (эффективность 8)
Исполнитель 4 → Работа 5 (эффективность 7)
Исполнитель 5 → Работа 1 (эффективность 2)
Суммарная эффективность: 3 + 5 + 8 + 7 + 2 = 25После чего сама пробует найти вариант лучше, уже не объясняя промежуточные результаты:
Однако это не оптимальное решение. Давайте попробуем другой подход:
Исполнитель 1 → Работа 4 (эффективность 9)
Исполнитель 2 → Работа 1 (эффективность 7)
Исполнитель 3 → Работа 5 (эффективность 9)
Исполнитель 4 → Работа 2 (эффективность 1)
Исполнитель 5 → Работа 3 (эффективность 9)
Суммарная эффективность: 9 + 7 + 9 + 1 + 9 = 35Полученный результат также, как и в варианте D1, не является оптимальным.
Рассмотрим варианты решений более подробно.
DeepSeek в варианте D1 предложила выполнить шаг D1.1.1 иначе (вычесть каждый элемент из максимального значения в матрице), нежели представлено в H.1.1 (в каждой строке матрицы необходимо найти максимальный элемент, его же вычесть из каждого элемента соответствующей строки и умножить всю матрицу на -1). В варианте же D2 нейросеть пропускает указанный шаг, что в последствии приведет к множеству ошибок.
Так, после выполнения шага преобразования (H.1.1, D1.1.1), получены матрицы, представленные на рисунке 2.

При выполнении редукции по строкам в варианте D1 нейросеть не отобразила результаты выполнения расчетов, поэтому редукция по строкам и столбцам (рис. 3, 4) выполнена вручную. В варианте D2 нейросеть корректно выполнила редукцию и по строкам, и по столбцам.


Из рисунка 4 (матрицы H и D1) видно, что несмотря на отличия в шагах D1.1.1 и H.1.1 после выполнения преобразований полученные матрицы идентичны.
Далее должна быть выполнена проверка N на наличие оптимального распределения. Так как полученные матрицы не могут быть оптимально покрыты нулями, требуется выполнить преобразование матриц (шаг H.2.3 алгоритма). Здесь (рис. 4, матрица D2, шаг D2.2.N,) DeepSeek D2 допускает вторую ошибку и говорит, что дальнейшее преобразование матрицы не требуется, однако в полученной матрице нет решения (невозможно выбрать нули так, чтобы они не пересекались). В варианте D1 нейросеть не отображает промежуточный результат расчета, поэтому преобразование матриц для всех вариантов выполнено вручную (рис. 5). Для варианта D1 намеренно вычеркнуты отличные от варианта H столбцы и строки так как венгерский метод обладает сходимостью.

В результате преобразования (рис. 6) получаем, что в варианте D1 нейросеть должна дать ответ, идентичный человеческому, а в варианте D2 видим решение задачи. Оно не верное, но корректное с точки зрения покрытия нулей. На рисунке отмечены оптимальные варианты распределения (где это возможно).

На рисунке 7 представлено сравнение результатов решения задачи.

При наложении полученных результатов имеем:
Расчет человеком: 9+7+6+7+9 = 38;
Расчет человеком, алгоритм D1: 9+7+6+7+9 = 38;
Расчет нейросетью, алгоритм D1: 9+7+9+6+4 = 35;
Расчет человеком, алгоритм D2: нет решения (можно выбрать максимум 4 нуля);
Расчет нейросетью, алгоритм D2: 9+7+9+1+9 = 35;
Расчет человеком алгоритма D2: 2+1+8+5+5 = 21.
Так, при выполнении расчета D1, нейросеть правильно описала порядок решения задачи, правильно определила тип задачи, выполнила начальное преобразование и редукцию матрицы, но, исходя из конечного ответа, выполнила неверно или не выполнила преобразование матрицы, следствием чего является некорректный результат решения задачи (рис. 7, D1), включающий выбор ненулевых значений матрицы.
При выполнении расчета D2 (рис. 4) видно, что оптимальное распределение не достигнуто, но нейросеть говорит об обратном. При этом из матрицы, которую приводит нейросеть после выполнения процедур редукции (рис. 7), видно, что ответ нейросети содержит 4 ненулевых значения (рис. 7). Ни одно из выбранных нейросетью значений не соответствует значениям, которые должен выбрать человек, включая вариант продолжения преобразования матрицы вручную. Тем не менее, 3 из 5 ячеек соответствуют оптимальному варианту распределения (рис. 7, человек), и варианту распределения, полученному нейросетью в варианте D1 (рис. 7, D1), хотя итоговый ответ не верный.
Далее, LLM DeepSeek в диалоге D2, был задан вопрос найти решение лучше, после чего начался комбинаторный перебор возможных вариантов до исчерпания ограничений контекстного окна. Всего нейросеть успела перебрать 82 варианта различных комбинаций, но оптимальное распределение найти так и не смогла.
Комбинаторный перебор вариантов решенийПользователь:
Существует решение лучше, найди его
D2:
Давайте пересмотрим задачу и попробуем найти более оптимальное распределение исполнителей по работам, чтобы суммарная эффективность была выше 35.
Попробуем назначить исполнителей на работы с максимальной эффективностью, избегая конфликтов (т.е. чтобы каждый исполнитель был назначен только на одну работу и каждая работа выполнялась только одним исполнителем).
Шаг 2:
Исполнитель 1 → Работа 4 (эффективность 9)
Исполнитель 2 → Работа 3 (эффективность 7)
Исполнитель 3 → Работа 5 (эффективность 9)
Исполнитель 4 → Работа 2 (эффективность 1)
Исполнитель 5 → Работа 1 (эффективность 2)
Суммарная эффективность: 9 + 7 + 9 + 1 + 2 = 28
Это хуже, чем предыдущее решение.
Шаг 3: Попробуем другое распределение
Исполнитель 1 → Работа 4 (эффективность 9)
Исполнитель 2 → Работа 1 (эффективность 7)
Исполнитель 3 → Работа 5 (эффективность 9)
Исполнитель 4 → Работа 2 (эффективность 1)
Исполнитель 5 → Работа 3 (эффективность 9)
Суммарная эффективность: 9 + 7 + 9 + 1 + 9 = 35
Это то же самое, что и предыдущее решение.
Шаг 4: Попробуем еще одно распределение
Исполнитель 1 → Работа 4 (эффективность 9)
Исполнитель 2 → Работа 5 (эффективность 6)
Исполнитель 3 → Работа 3 (эффективность 8)
Исполнитель 4 → Работа 2 (эффективность 1)
Исполнитель 5 → Работа 1 (эффективность 2)
Суммарная эффективность: 9 + 6 + 8 + 1 + 2 = 26
Это хуже, чем предыдущее решение.
...
Шаг 82: Попробуем еще одно распределение
Исполнитель 1 → Работа 4 (эффективность 9)
Исполнитель 2 → Работа 3 (эффективность 7)
Исполнитель 3 → Работа 5 (эффективность 9)
Исполнитель 4 → Работа 2 (эффективность 1)
Исполнитель 5 → Работа 1 (эффективность 2)
Суммарная эффективность: 9 + 7 + 9 + 1 + 2 = 28
Это хуже, чем предыдущее решение.
Нейросети ChatGPT на модели gpt-4o-mini была дана таже задача. Нейросеть корректно воспроизвела матрицу и дала следующий ответ:
Шаги для применения венгерского алгоритма:
Преобразование матрицы: В данном случае все значения положительные, поэтому мы можем оставить матрицу без изменений.
Применение венгерского алгоритма: Мы будем искать оптимальное распределение исполнителей по видам работ, чтобы максимизировать суммарную эффективность.
Результат распределения:
После применения венгерского алгоритма, оптимальное распределение исполнителей по видам работ может быть следующим:
Исполнитель 1 (эффективность 9) выполняет работу 4.
Исполнитель 2 (эффективность 7) выполняет работу 3.
Исполнитель 3 (эффективность 9) выполняет работу 5.
Исполнитель 4 (эффективность 7) выполняет работу 1.
Исполнитель 5 (эффективность 4) выполняет работу 2.
Суммарная эффективность = 9 + 7 + 9 + 7 + 4 = 36.
Таким образом, максимальная суммарная эффективность составляет 36.Нейросеть решает задачу и не объясняет выполнение промежуточных расчетов, в общем виде описывая алгоритм решения задачи.
Нейросеть, как и DeepSeek в варианте D2, допускает ошибку и отказывается от первичного преобразования матрицы, после чего говорит нам ответ. На рисунке 8 представлен первый результат решения задачи LLM ChatGPT.

Оптимальное распределение ChatGPT значительно отличается от оптимального, полученного человеком, а также от предлагаемых DeepSeek в вариантах D1 и D2.
Нейросеть говорит нам, что максимальная эффективность составляет 36 (9 + 7 + 9 + 7 + 4), однако, просуммировав значения выбранных нейросетью ячеек, мы получим 32 (9 + 7 + 9 + 3 + 4). Из рисунка 8 видно, что нейросеть заменила значение ячейки (4,1) и вместо цифры 3 в расчете использовала цифру 7. При этом число 7 действительно есть в 4 строке в ячейке (4,5).
Зная, что нейросеть допустила ошибку, в продолжение начатого диалога ей была дана задача найти решение лучше, на что последовал ответ:
Для решения задачи распределения исполнителей по видам работ с максимальной суммарной эффективностью можно использовать венгерский алгоритм, как вы уже упомянули. Однако, давайте попробуем найти оптимальное распределение вручную, чтобы убедиться, что мы действительно получаем максимальную эффективность.
Исходная матрица эффективности:
[[7, 3, 6, 9, 5],
[7, 5, 7, 5, 6],
[7, 6, 8, 8, 9],
[3, 1, 6, 5, 7],
[2, 4, 9, 9, 5]]
Шаги для нахождения оптимального распределения:
Перебор возможных распределений: Мы можем попробовать разные комбинации распределения исполнителей по работам и вычислить их эффективность.
После перебора различных вариантов, мы можем найти максимальную эффективность.
Пример перебора:
Исполнитель 1 выполняет работу 4 (эффективность 9).
Исполнитель 2 выполняет работу 3 (эффективность 7).
Исполнитель 3 выполняет работу 5 (эффективность 9).
Исполнитель 4 выполняет работу 1 (эффективность 7).
Исполнитель 5 выполняет работу 2 (эффективность 4).
Суммарная эффективность = 9 + 7 + 9 + 7 + 4 = 36.
Проверка других комбинаций:
Исполнитель 1 (9) - работа 4
Исполнитель 2 (7) - работа 3
Исполнитель 3 (8) - работа 2
Исполнитель 4 (7) - работа 1
Исполнитель 5 (9) - работа 5
Суммарная эффективность = 9 + 7 + 8 + 7 + 9 = 40.
Заключение:
После проверки различных комбинаций, максимальная суммарная эффективность, которую можно достичь, составляет 40. Это распределение может быть найдено с помощью венгерского алгоритма или путем перебора возможных вариантов. Если вам нужно, я могу помочь с реализацией венгерского алгоритма для автоматизации этого процесса.В этот раз нейросеть говорит, что максимальная суммарная эффективность составляет 40. Данный вариант распределения представлен на рисунке 9.

В этот раз нейросеть заменила уже 3 значения исходной матрицы. Сумма представленных нейросетью чисел действительно составляет 40.
Далее, чтобы разобраться как нейросеть получила такое решение, был задан вопрос с просьбой детально описать вариант решения, где получается результат 40. На что нейросеть снова дала новый вариант:
Оптимальное распределение, которое дает суммарную эффективность 40, выглядит следующим образом:
Исполнитель 1 выполняет работу 4 (эффективность 9).
Исполнитель 2 выполняет работу 3 (эффективность 7).
Исполнитель 3 выполняет работу 5 (эффективность 9).
Исполнитель 4 выполняет работу 1 (эффективность 7).
Исполнитель 5 выполняет работу 2 (эффективность 8).
Теперь давайте посчитаем суммарную эффективность:
Суммарная эффективность = 9 + 7 + 9 + 7 + 8 = 40.
Таким образом, максимальная суммарная эффективность составляет 40, и это распределение можно получить, используя венгерский алгоритм или перебор возможных вариантов.В третьем варианте LLM ChatGPT снова изменила значения исходной матрицы. Все три варианта решения для наглядности представлены на рисунке 10.

Оптимальное решение не найдено.
ChatGPT-5 дала следующий ответ:
Скрытый текстДля решения задачи о назначениях с целью максимизации суммарной эффективности используется венгерский алгоритм (или метод Муньо — Куна). Дана матрица эффективности:
[
[7, 6, 3, 9, 5],
[7, 5, 7, 5, 6],
[7, 6, 8, 8, 9],
[3, 1, 6, 5, 7],
[2, 4, 9, 9, 5]
]
Поскольку венгерский алгоритм минимизирует затраты, преобразуем задачу в минимизацию, вычитая каждый элемент из максимального значения матрицы (9):
Преобразованная матрица:
[
[2, 6, 3, 0, 4],
[2, 4, 2, 4, 3],
[2, 3, 1, 1, 0],
[6, 8, 3, 4, 2],
[7, 5, 0, 0, 4]
]
Теперь применим венгерский алгоритм к преобразованной матрице.
Шаг 1: Вычитаем минимальный элемент каждой строки из всех элементов строки.
Строка 1: min=0 → без изменений: [2,6,3,0,4]
Строка 2: min=2 → вычитаем 2: [0,2,0,2,1]
Строка 3: min=0 → без изменений: [2,3,1,1,0]
Строка 4: min=2 → вычитаем 2: [4,6,1,2,0]
Строка 5: min=0 → без изменений: [7,5,0,0,4]
Получаем:
[
[2, 6, 3, 0, 4],
[0, 2, 0, 2, 1],
[2, 3, 1, 1, 0],
[4, 6, 1, 2, 0],
[7, 5, 0, 0, 4]
]
Шаг 2: Вычитаем минимальный элемент каждого столбца из всех элементов столбца.
Столбцы:
Колонка 1: min=0 → [2,0,2,4,7]
Колонка 2: min=2 → [4,0,1,4,3]
Колонка 3: min=0 → [3,0,1,1,0]
Колонка 4: min=0 → [0,2,1,2,0]
Колонка 5: min=0 → [4,1,0,0,4]
После вычитания:
[
[2, 4, 3, 0, 4],
[0, 0, 0, 2, 1],
[2, 1, 1, 1, 0],
[4, 4, 1, 2, 0],
[7, 3, 0, 0, 4]
]
Шаг 3: Покрываем все нули минимальным количеством линий.
Проводим линии через строки и столбцы, покрывающие все нули:
Покрываем столбец 4 (имеет нули в строках 1,5).
Покрываем строку 2 (имеет нули в столбцах 1,2,3).
Покрываем строку 5 (имеет нули в столбцах 3,4).
Все нули покрыты 3 линиями (2 строки и 1 столбец), но требуется 5 линий для идеального паросочетания. Находим минимальный непокрытый элемент: 1.
Вычитаем его из всех непокрытых элементов и прибавляем к элементам на пересечении линий.
Непокрытые элементы: [2,4,3,4; 2,1,1; 4,4,1,2; 7,3,4]
Минимальный непокрытый = 1.
Вычитаем 1 из непокрытых, прибавляем 1 к элементам на пересечении (строки 2,5 и столбец 4).
Новая матрица:
[
[2, 4, 3, 0, 4],
[0, 0, 0, 3, 2],
[1, 0, 0, 1, 0],
[4, 4, 1, 2, 0],
[7, 3, 0, 0, 4]
]
Снова покрываем нули:
Покрываем столбец 3 (нули в строках 2,3,5).
Покрываем столбец 4 (нули в строках 1,5).
Покрываем строку 3 (нули в столбцах 2,3,5).
Все нули покрыты 3 линиями, но нужно 5. Минимальный непокрытый элемент = 1.
Вычитаем 1 из непокрытых, прибавляем к пересечениям (строки 2,3,5 и столбцы 3,4).
Новая матрица:
[
[2, 4, 3, 0, 4],
[0, 0, 0, 4, 3],
[0, 0, 0, 2, 0],
[4, 4, 1, 2, 0],
[7, 3, 0, 0, 4]
]
Покрываем нули:
Покрываем столбец 3 (нули в строках 2,3,5).
Покрываем столбец 4 (нули в строках 1,5).
Покрываем столбец 5 (нули в строках 3,4).
Теперь все нули покрыты 3 линиями. Минимальный непокрытый = 1.
Вычитаем 1 из непокрытых, прибавляем к пересечениям (строки 2,3,4,5 и столбцы 3,4,5).
Новая матрица:
[
[2, 4, 3, 0, 4],
[0, 0, 0, 5, 4],
[0, 0, 0, 3, 0],
[3, 3, 0, 2, 0],
[7, 3, 0, 0, 4]
]
Теперь можно найти идеальное паросочетание:
Строка 1: единственный ноль в столбце 4 → назначаем исполнителя 1 на работу 4.
Строка 2: нули в столбцах 1,2,3 → выбираем столбец 1 (например) → исполнитель 2 на работу 1.
Строка 3: нули в столбцах 2,3,5 → выбираем столбец 5 → исполнитель 3 на работу 5.
Строка 4: нули в столбцах 3,5 → выбираем столбец 3 → исполнитель 4 на работу 3.
Строка 5: нули в столбцах 3,4 → но столбец 3 и 4 заняты, поэтому выбираем столбец 4? Но столбец 4 уже занят исполнителем 1. Анализируем альтернативы.
Оптимальное назначение по нулям:
Исполнитель 1 → работа 4 (эффективность 9)
Исполнитель 2 → работа 1 (эффективность 7)
Исполнитель 3 → работа 5 (эффективность 9)
Исполнитель 4 → работа 3 (эффективность 6)
Исполнитель 5 → работа 2 (эффективность 4) — но в матрице нет нуля для исполнителя 5 на работу 2. Проверяем исходную эффективность: исполнитель 5 на работу 2 имеет эффективность 4.
Фактически, после преобразований находим назначение:
Строка 5 имеет нули в столбцах 3 и 4, но оба заняты. Поэтому необходимо вернуться к предыдущим шагам и выбрать другое паросочетание.
Альтернативное назначение:
Исполнитель 1: работа 4 (0)
Исполнитель 2: работа 3 (0)
Исполнитель 3: работа 5 (0)
Исполнитель 4: работа 5? Но конфликт. Instead, из последней матрицы:
Назначаем:
Исполнитель 1: работа 4
Исполнитель 2: работа 1
Исполнитель 3: работа 2 (0 в столбце 2 строки 3? В строке 3 есть ноль в столбце 2.
В последней матрице строка 3: [0,0,0,3,0] — можно назначить на работу 2.
Исполнитель 4: работа 5 (0 в столбце 5)
Исполнитель 5: работа 3 (0)
Таким образом:
Исполнитель 1 → работа 4 (эф. 9)
Исполнитель 2 → работа 1 (эф. 7)
Исполнитель 3 → работа 2 (эф. 6) — в исходной для работы 2 эффективность 6
Исполнитель 4 → работа 5 (эф. 7)
Исполнитель 5 → работа 3 (эф. 9)
Суммарная эффективность = 9+7+6+7+9 = 38.
Проверим, можно ли улучшить:
Исходная матрица:
Исполнитель 1: [7,3,6,9,5] → лучше 9
Исполнитель 2: [7,5,7,5,6] → лучше 7
Исполнитель 3: [7,6,8,8,9] → лучше 9, но здесь назначили на 6? Actually, назначили на работу 2 с эф.6, но можно на работу 5 с эф.9.
В нашем назначении исполнитель 3 на работу 2 (6), а исполнитель 4 на работу 5 (7), но если поменять: исполнитель 3 на работу 5 (9), исполнитель 4 на работу 3 (6), то сумма та же 9+7+9+6+9=40? Но исполнитель 5 на работу 3 имеет 9.
Оптимальное назначение:
Исполнитель 1: работа 4 (9)
Исполнитель 2: работа 1 (7)
Исполнитель 3: работа 5 (9)
Исполнитель 4: работа 3 (6)
Исполнитель 5: работа 2 (4) — но эф.4
Сумма=9+7+9+6+4=35, хуже.
Лучшее найденное: 38.
Но по венгерскому алгоритму должно быть оптимально. Еще один вариант:
Исполнитель 1: работа 4 (9)
Исполнитель 2: работа 3 (7)
Исполнитель 3: работа 5 (9)
Исполнитель 4: работа 2 (1) или работу 5, но занята.
Исполнитель 5: работа 1 (2) или работу 3 (9)
Максимальная сумма: назначить исполнителя 5 на работу 3 (9), исполнителя 3 на работу 5 (9), исполнителя 1 на работу 4 (9), исполнителя 2 на работу 1 (7), исполнителя 4 на работу 2 (1) = 9+9+9+7+1=35.
Или исполнитель 4 на работу 5 (7), но тогда исполнитель 3 на другую.
После венгерского алгоритма оптимальное назначение:
Исполнитель 1 → работа 4 (9)
Исполнитель 2 → работа 1 (7)
Исполнитель 3 → работа 2 (6)
Исполнитель 4 → работа 5 (7)
Исполнитель 5 → работа 3 (9)
Сумма = 9+7+6+7+9 = 38.
Можно ли получить 39?
Например:
Исполнитель 1:9, исполнитель 2:7, исполнитель 3:9, исполнитель 4:7, исполнитель 5:7? Но нет, исполнитель 5 не имеет 7 на свободной работе.
Исполнитель 3 имеет 9 на работе 5, но тогда исполнитель 4 имеет только 7 на работе 5 или 6 на работе 3.
Таким образом, 38 является максимальным.
Окончательное распределение:
Исполнитель 1 выполняет работу 4 с эффективностью 9
Исполнитель 2 выполняет работу 1 с эффективностью 7
Исполнитель 3 выполняет работу 2 с эффективностью 6
Исполнитель 4 выполняет работу 5 с эффективностью 7
Исполнитель 5 выполняет работу 3 с эффективностью 9
Суммарная максимальная эффективность: 9 + 7 + 6 + 7 + 9 = 38
Оптимальное решение найдено! Рассмотрим решение более подробно.
ChatGPT 5 корректно выполнил преобразование матрицы, редукцию по строкам и столбцам, НО, в момент преобразования матрицы начинаются интересные расчеты.

ChatGPT 5 при первом преобразовании не замечает пару непокрытых нулей в столбце 5, но все же проводит преобразование. Результат представленного преобразования не соответствует тому, что должно было бы получиться. Затем еще два раза проводит некорректные преобразования матриц, противореча себе. Наглядный пример – когда LLM говорит:
Покрываем столбец 3 (нули в строках 2,3,5).
Покрываем столбец 4 (нули в строках 1,5).
Покрываем столбец 5 (нули в строках 3,4).
Теперь все нули покрыты 3 линиями. Минимальный непокрытый = 1.
Вычитаем 1 из непокрытых, прибавляем к пересечениям (строки 2,3,4,5 и столбцы 3,4,5).Но при таком покрытии нулей во-первых – нет пересечений, а во-вторых – минимальный непокрытый элемент (не считая 0) – 2.

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

ChatGPT 5 чтобы получить правильный ответ начинает перебирать множество вариантов, хотя по факту их (для полученной ChatGPT 5 матрицы) – два:
Скрытый текстИсполнитель | 1 вариант | 2 вариант | ||
Работа | Эффективность | Работа | Эффективность | |
1 | 4 | 9 | 4 | 9 |
2 | 1 | 7 | 2 | 5 |
3 | 2 | 6 | 1 | 7 |
4 | 5 | 7 | 5 | 7 |
5 | 3 | 9 | 3 | 9 |
Сумма | 38 | 37 | ||
Формально, можно считать решение верным, однако, к нему привели неверные расчеты и скорее случайность.
Каждая нейросеть в конце диалога предлагала программную реализацию для решения данной задачи, и, учитывая, что ни одна LLM не смогла решить задачу, интересна оценка способности написать работоспособную программу.
В статье представлен рабочий код решения задачи на языке R. Нейросетям было предложено перевести имеющийся код на язык Python.
И DeepSeek и ChatGPT справились с задачей. Код в обоих случаях выполняется без проблем и формирует результат. Однако, корректный результат удалось получить только при выполнении программы, написанной LLM DeepSeek. Программа, написанная ChatGPT, после выполнения вывела некорректный результат.
Далее, нейросетям было предложено самим написать код на языке Python, решающий данную задачу. Оба представленных варианта программы оказались рабочими и дали корректный результат, однако, при детальном рассмотрении оказалось, что код идентичен и выглядит следующим образом:
Сгенерированный код:import numpy as np
from scipy.optimize import linear_sum_assignment
#Матрица эффективности
efficiency_matrix = np.array([
[7, 3, 6, 9, 5],
[7, 5, 7, 5, 6],
[7, 6, 8, 8, 9],
[3, 1, 6, 5, 7],
[2, 4, 9, 9, 5]
])
#Венгерский алгоритм ищет минимум, поэтому инвертируем матрицу
cost_matrix = -efficiency_matrix
#Находим оптимальное значение
row_ind, col_ind = linear_sum_assignment(cost_matrix)
#Выводим результаты
max_efficiency = efficiency_matrix[row_ind, col_ind].sum()
assignments = list(zip(row_ind, col_ind))
print(«оптимальное распределение:»)
from worker, job in assignments:
print(f’исполнитель {worker + 1} – работа {job + 1} (эффективность { efficiency_matrix[worker, job]})’)
print(f’\nМаксимальная суммарная эффективность: { max_efficiency}’)Обе нейросети использовали библиотеку linear_sum_assignment, которая входит в пакет scipy. Данная библиотека предназначена для решения задачи о назначениях. Все что делают написанные нейросетями программы – загружают в функцию linear_sum_assignment исходную матрицу. Ожидаемо, написанные таким образом программы выполняются безупречно.
Нейросетям был задан вопрос написать код, реализующий венгерский алгоритм без использования библиотеки linear_sum_assignment. В такой постановке вопроса DeepSeek и ChatGPT 4o не справились с задачей. В обоих случаях c код оказался нерабочим, зависал в бесконечном цикле, не давая никакого результата. Код ChatGPT-5 оказался рабочим, но давал некорректный результат.
ни одна LLM не справилась с задачей;
все LLM корректно выполнили базовые арифметические операции (сложение);
все LLM правильно выбрали метод решения задачи;
все LLM правильно интерпретировали исходные данные, даже в промежуточных диалогах;
ни одна LLM не смогла дать корректное пошаговое объяснение решения задачи.
все LLM справились с задачей перевода рабочего кода с языка R на Python;
все LLM смогли написать неуникальный код, с помощью которого можно решить поставленную задачу;
ни одна модель не смогла написать уникальный код программы для решения рассматриваемой задачи.
Если возникает вопрос, почему я считаю, что ни одна LLM не справилась с задачей, то ниже представлен диалог с Chat-GPT-5 с немного усложненной задачей (6х6). Правильный ответ – 46.
Решение задачи 6х6Вопрос:
Есть 6 исполнителей и 6 видов работ. Каждый исполнитель способен выполнять каждый вид работы с эффективностью, оцениваемой от 1 до 9. Далее представлена матрица, отражающая на каком уровне эффективности каждый исполнитель способен выполнять каждый вид работ соответственно: [
[7, 3, 6, 9, 5, 3],
[3, 5, 7, 5, 6, 7],
[7, 6, 8, 8, 9, 7],
[3, 1, 6, 5, 7, 7],
[2, 4, 9, 9, 5, 9],
[4, 7, 2, 4, 6, 6]
].
Задача распределить всех исполнителей так, чтобы суммарная их эффективность была максимальной.Ответ:
Для решения задачи о назначениях с целью максимизации суммарной эффективности применим венгерский алгоритм (метод Муньо — Куна). Поскольку алгоритм минимизирует затраты, преобразуем задачу в минимизацию, вычитая каждый элемент матрицы из максимального значения (9):
Исходная матрица эффективности (6x6):
Исполнители (строки) и работы (столбцы):
A: [7, 3, 6, 9, 5, 3]
B: [3, 5, 7, 5, 6, 7]
C: [7, 6, 8, 8, 9, 7]
D: [3, 1, 6, 5, 7, 7]
E: [2, 4, 9, 9, 5, 9]
F: [4, 7, 2, 4, 6, 6]
Шаг 1: Преобразование к задаче минимизации
Вычитаем каждый элемент из 9 (максимальное значение в матрице):
Преобразованная матрица (затраты):
A: [2, 6, 3, 0, 4, 6]
B: [6, 4, 2, 4, 3, 2]
C: [2, 3, 1, 1, 0, 2]
D: [6, 8, 3, 4, 2, 2]
E: [7, 5, 0, 0, 4, 0]
F: [5, 2, 7, 5, 3, 3]
Шаг 2: Редукция строк
Вычитаем минимальный элемент каждой строки из всех элементов строки:
Строка A: min=0 → без изменений: [2,6,3,0,4,6]
Строка B: min=2 → вычитаем 2: [4,2,0,2,1,0]
Строка C: min=0 → без изменений: [2,3,1,1,0,2]
Строка D: min=2 → вычитаем 2: [4,6,1,2,0,0]
Строка E: min=0 → без изменений: [7,5,0,0,4,0]
Строка F: min=2 → вычитаем 2: [3,0,5,3,1,1]
Получаем:
[
[2, 6, 3, 0, 4, 6],
[4, 2, 0, 2, 1, 0],
[2, 3, 1, 1, 0, 2],
[4, 6, 1, 2, 0, 0],
[7, 5, 0, 0, 4, 0],
[3, 0, 5, 3, 1, 1]
]
Шаг 3: Редукция столбцов
Вычитаем минимальный элемент каждого столбца из всех элементов столбца:
Колонка 1: min=2 → [0,2,0,2,5,1]
Колонка 2: min=0 → [6,2,3,6,5,0]
Колонка 3: min=0 → [3,0,1,1,0,5]
Колонка 4: min=0 → [0,2,1,2,0,3]
Колонка 5: min=0 → [4,1,0,0,4,1]
Колонка 6: min=0 → [6,0,2,0,0,1]
После редукции:
[
[0, 6, 3, 0, 4, 6],
[2, 2, 0, 2, 1, 0],
[0, 3, 1, 1, 0, 2],
[2, 6, 1, 2, 0, 0],
[5, 5, 0, 0, 4, 0],
[1, 0, 5, 3, 1, 1]
]
Шаг 4: Покрытие нулей минимальным количеством линий
Проводим линии через строки и столбцы, покрывающие все нули. После нескольких итераций (вычитания минимального непокрытого элемента и добавления к пересечениям) получаем матрицу, позволяющую найти оптимальное назначение.
Оптимальное назначение (по нулям в финальной преобразованной матрице):
Исполнитель A (строка 1) → Работа 4 (столбец 4) — эффективность 9
Исполнитель B (строка 2) → Работа 6 (столбец 6) — эффективность 7
Исполнитель C (строка 3) → Работа 5 (столбец 5) — эффективность 9
Исполнитель D (строка 4) → Работа 5? Но конфликт. Назначаем D → Работа 6? Но уже занята.
Вместо этого, из финальной матрицы:
Исполнитель D → Работа 5 (столбец 5) — но эффективность 7, но уже занята C.
Альтернативно: назначаем D → Работа 3 (столбец 3) — эффективность 6.
Пересматриваем для оптимального паросочетания:
A: работа 4 (9)
B: работа 6 (7)
C: работа 5 (9)
D: работа 3 (6) — в исходной: 6
E: работа 3? Но занята. E → работа 2 (4) или работа 4 (0) но занята.
Из матрицы: E имеет нули в столбцах 3,4,6. Но столбцы 4 и 6 заняты. Поэтому E → работа 3 (0) — но эффективность 9.
F: работа 2 (7)
Но конфликт по работе 3 между D и E.
После полного применения венгерского алгоритма (с дополнительными итерациями покрытия) получаем окончательное назначение:
Окончательное оптимальное назначение:
Исполнитель A → Работа 4 (эффективность 9)
Исполнитель B → Работа 6 (эффективность 7)
Исполнитель C → Работа 5 (эффективность 9)
Исполнитель D → Работа 3 (эффективность 6)
Исполнитель E → Работа 2 (эффективность 4) Но в исходной для E на работу 2: 4
Исполнитель F → Работа 1 (эффективность 4) Но в исходной для F на работу 1: 4
Сумма = 9+7+9+6+4+4 = 39.
Но это не максимум. Исправим:
Исполнитель E имеет высокую эффективность на работах 3 (9), 4 (9), 6 (9). Назначим E на работу 3 (9), тогда D на работу 5 (7) или работу 6 (7), но C на работе 5 (9) лучше.
Лучше:
E → работа 3 (9)
D → работа 6 (7)
C → работа 5 (9)
B → работа 2 (5) или работу 1 (3), но лучше работу 6 (7) но занята.
Оптимально по алгоритму:
После точного применения венгерского алгоритма (пропуская подробные итерации из-за объема) финальное назначение:
A: работа 4 (9)
B: работа 6 (7)
C: работа 5 (9)
D: работа 2 (1) но это 1, не хорошо
Лучше использовать E на работу 3 (9), F на работу 2 (7), D на работу 6 (7).
Максимальная сумма достигается при:
A: работа 4 (9)
B: работа 6 (7)
C: работа 5 (9)
D: работа 3 (6) или работу 6, но занята
E: работа 3 (9) но конфликт
F: работа 2 (7)
Чтобы избежать конфликта, назначаем:
A: работа 4 (9)
B: работа 1 (3) но это низко, лучше B на работу 6 (7)
C: работа 5 (9)
D: работа 6 (7)
E: работа 3 (9)
F: работа 2 (7)
Сумма = 9+3+9+7+9+7 = 44.
Но проверим возможность:
E на работу 3 (9)
F на работу 2 (7)
C на работу 5 (9)
A на работу 4 (9)
D на работу 6 (7)
B на работу 1 (3) — но есть лучше: B на работу 6 (7) но занята, или работу 2 (5) но занята.
Лучше назначить B на работу 6 (7), а D на работу 1 (3) или работу 2 (1), но это хуже.
Максимальная сумма: 9+7+9+7+9+7 = 48.
Как достичь:
A: работа 4 (9)
B: работа 6 (7)
C: работа 5 (9)
D: работа 1 (3) не оптимально
Но D имеет на работе 6: 7, но занята.
Через венгерский алгоритм точно вычисляем:
Финальное оптимальное назначение (после полного применения алгоритма):
Исполнитель A → Работа 4 (эффективность 9)
Исполнитель B → Работа 6 (эффективность 7)
Исполнитель C → Работа 5 (эффективность 9)
Исполнитель D → Работа 2 (эффективность 1) но это минимум, не подходит
Исправляем: алгоритм дал назначение с суммарными затратами 0, но в исходных terms.
После пересчета, оптимальное назначение для максимизации:
A: работа 4 (9)
B: работа 6 (7)
C: работа 5 (9)
D: работа 3 (6)
E: работа 2 (4)
F: работа 1 (4)
Сумма 39.
Но это не максимум.
Чтобы получить максимум, назначаем:
E на работу 3 (9)
C на работу 5 (9)
A на работу 4 (9)
B на работу 6 (7)
F на работу 2 (7)
D на работу 1 (3)
Сумма 9+9+9+7+7+3=44.
Или:
E на работу 6 (9)
C на работу 5 (9)
A на работу 4 (9)
B на работу 2 (5)
F на работу 1 (4)
D на работу 3 (6)
Сумма 9+9+9+5+4+6=42.
Максимально возможное: 9+9+9+7+7+7=48, но нет исполнителя с 7 на свободной работе.
Точный расчет с помощью венгерского алгоритма дает:
Окончательный ответ:
Исполнитель 1 (A) → Работа 4 (эффективность 9)
Исполнитель 2 (B) → Работа 6 (эффективность 7)
Исполнитель 3 (C) → Работа 5 (эффективность 9)
Исполнитель 4 (D) → Работа 3 (эффективность 6)
Исполнитель 5 (E) → Работа 2 (эффективность 4)
Исполнитель 6 (F) → Работа 1 (эффективность 4)
Суммарная эффективность: 9 + 7 + 9 + 6 + 4 + 4 = 39
Это максимальная сумма, достижимая при данных условиях (после проверки всех комбинаций).
Ответ:
Оптимальное распределение:
Исполнитель 1 → Работа 4 (эффективность 9)
Исполнитель 2 → Работа 6 (эффективность 7)
Исполнитель 3 → Работа 5 (эффективность 9)
Исполнитель 4 → Работа 3 (эффективность 6)
Исполнитель 5 → Работа 2 (эффективность 4)
Исполнитель 6 → Работа 1 (эффективность 4)
Суммарная максимальная эффективность: 39
На основе анализа решения данной задачи можно сделать следующие выводы:
LLM демонстрируют систематические ошибки в решении задач, которые незаметны при беглом ознакомлении, но выявляются при детальной проверке
ответ, генерируемый большой языковой моделью, может оказаться верным, однако это скорее исключение, а не правило; вероятность получения правильного ответа в таком случае лишь незначительно превышает случайный выбор
нейросети не обладают ни семантическим пониманием контекста, ни способностью критически оценивать информацию
использование языковых моделей должно сопровождаться обязательной проверкой генерируемого контента, особенно там, где точность и достоверность критически важны