ЛИФО
ЛИФО (от англ. LIFO, Last In — First Out, «последним пришёл — первым ушёл») — это способ организации и обработки данных, при котором элемент, добавленный в структуру последним, извлекается из неё первым. В информатике и математике данный принцип лежит в основе структуры данных, называемой стеком. В бухгалтерском учёте и налогообложении метод ЛИФО представляет собой способ оценки стоимости материально-производственных запасов (МПЗ) при их списании, основанный на допущении, что запасы, поступившие последними, выбывают первыми.
Принцип работы и основные характеристики
Основная идея ЛИФО заключается в строгом порядке доступа к элементам: операции добавления (push) и извлечения (pop) выполняются только с одного конца структуры, который называется вершиной стека. Это означает, что для доступа к самому первому добавленному элементу необходимо последовательно извлечь все элементы, добавленные после него. Такой порядок противоположен принципу FIFO (First In — First Out, «первым пришёл — первым ушёл»), где первый добавленный элемент извлекается первым.
Ключевые характеристики стека, реализованного по принципу ЛИФО:
- Ограниченный доступ: чтение или удаление возможно только для верхнего элемента.
- Фиксированное время операций: добавление и удаление элемента выполняются за константное время O(1), если не требуется перераспределение памяти.
- Простота реализации: стек легко реализуется на основе массива или связного списка.
Применение в информатике
В программировании принцип ЛИФО является фундаментальным и используется в широком спектре задач.
Стек вызовов (Call Stack)
Это наиболее распространённое применение. Каждый раз, когда программа вызывает функцию (или процедуру), информация о текущем состоянии выполнения (адрес возврата, локальные переменные, параметры) помещается в стек вызовов. Когда функция завершается, соответствующий фрейм извлекается из стека, и управление возвращается к предыдущей точке вызова. Это обеспечивает корректную обработку вложенных и рекурсивных вызовов.
Обратная польская запись (Reverse Polish Notation, RPN)
Алгоритмы вычисления арифметических выражений, записанных в постфиксной форме (например, 3 4 + 5 *), активно используют стек. Операнды помещаются в стек, а при встрече оператора из стека извлекаются два верхних операнда, над ними выполняется операция, и результат помещается обратно.
Алгоритмы поиска с возвратом (Backtracking)
В задачах, где необходимо исследовать множество вариантов (например, обход лабиринта, задача о восьми ферзях), стек используется для хранения текущего пути. При тупике алгоритм «откатывается» назад, извлекая последний шаг из стека.
Отмена действий (Undo)
Функция «отменить» в текстовых редакторах, графических программах и других приложениях реализована с помощью стека. Каждое действие пользователя помещается в стек. При вызове отмены последнее действие извлекается и отменяется.
Синтаксический анализ
Компиляторы и интерпретаторы используют стек для проверки правильности вложенности скобок, тегов (в XML, HTML) и других синтаксических конструкций.
Применение в бухгалтерском учёте (метод ЛИФО)
В бухгалтерии метод ЛИФО применяется для оценки стоимости списанных материально-производственных запасов (сырья, материалов, товаров). Суть метода заключается в том, что при отпуске запасов в производство или продажу их стоимость рассчитывается исходя из цены последней по времени поступления партии. Остаток запасов на конец периода оценивается по стоимости самой ранней партии.
Влияние на финансовые показатели
- В условиях инфляции: когда цены на закупаемые ресурсы растут, метод ЛИФО приводит к тому, что себестоимость проданных товаров (COGS) оказывается максимально высокой, а стоимость остатков на складе — минимально низкой. Это уменьшает налогооблагаемую прибыль и, соответственно, налог на прибыль.
- В условиях дефляции: картина противоположная — себестоимость занижается, а прибыль завышается.
Критика и ограничения
Метод ЛИФО подвергается критике за то, что он может искажать реальную стоимость активов компании в балансе (занижая её) и не отражает фактического физического движения товаров (которое чаще соответствует методу FIFO). Из-за этого Международные стандарты финансовой отчётности (МСФО) запрещают использование метода ЛИФО с 2005 года. В России метод ЛИФО также был исключён из Положения по бухгалтерскому учёту «Учёт материально-производственных запасов» (ПБУ 5/01) с 1 января 2008 года и в настоящее время не применяется для целей бухгалтерского учёта. Для целей налогового учёта в России метод ЛИФО также отменён с 2015 года (Федеральный закон № 81-ФЗ).
Сравнение с другими методами
| Характеристика | LIFO | FIFO |
|---|---|---|
| Порядок извлечения | Последний пришёл — первый ушёл | Первый пришёл — первый ушёл |
| Область применения | Стеки, алгоритмы с возвратом | Очереди, буферизация данных |
| Влияние инфляции (бухучёт) | Завышает себестоимость, занижает прибыль | Занижает себестоимость, завышает прибыль |
| Оценка остатков (инфляция) | Занижена (по старым ценам) | Приближена к рыночной (по новым ценам) |
| Реализация | Простая (один указатель) | Простая (два указателя) |
Интересные факты
- Термин «стек» (stack) в вычислительной технике впервые был использован в контексте аппаратной реализации в компьютере Burroughs B5000 (1961 год), который активно использовал стековую архитектуру для выполнения программ.
- В некоторых языках программирования (например, Forth, PostScript) стек является основной и единственной структурой данных для передачи аргументов и возврата результатов.
- В психологии и менеджменте существует понятие «стек задач» (task stack), когда человек или организация вынуждены решать проблемы в порядке, обратном их поступлению, что часто приводит к прокрастинации и неэффективности.
Источники
- Таненбаум Э., Остин Т. Архитектура компьютера. — 6-е изд. — СПб.: Питер, 2013.
- Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгоритмы: построение и анализ. — 3-е изд. — М.: Вильямс, 2013.
- Положение по бухгалтерскому учёту «Учёт материально-производственных запасов» (ПБУ 5/01) (утратило силу в части метода ЛИФО).
- Федеральный закон от 20.04.2014 № 81-ФЗ «О внесении изменений в часть вторую Налогового кодекса Российской Федерации».
- Международный стандарт финансовой отчётности (IAS) 2 «Запасы».
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →