Или, точнее, каково определение комбинаторного алгоритма и линейного алгоритма, соответственно?
Чтобы было ясно, потому что очевидно, что первые ответившие неправильно поняли вопрос: я не ищу определение алгоритма, работающего в линейном времени по сравнению с нелинейным временем. Линейный алгоритм каким-то образом связан с линейным программированием, которое представляет собой метод поиска или аппроксимации решений задач линейной оптимизации.
Поскольку NP-сложные задачи настолько сложны, существует целая область, пытающаяся найти приближенные решения. Например, задача коммивояжера имеет несколько приближенных решений, которые выполняются за полиномиальное время и дают решение, которое находится в пределах заданной границы наилучшего решения.
Некоторые из этих аппроксимирующих алгоритмов называются линейными алгоритмами, другие — комбинаторными; и последнее кажется предпочтительным (почему?). Это две концепции, которые я хотел бы понять.