Я навіть не студент CS, тому це може бути дурним питанням, але будь ласка, майте на собі ...
У епоху перед комп'ютером ми можемо реалізувати структуру даних масиву лише на зразок масиву ящиків. Оскільки вам потрібно знайти ящик з відповідним індексом, перш ніж витягувати з нього значення, часова складність пошуку масиву становить , припускаючи двійковий пошук.
Однак винахід комп’ютерів зробив велику різницю. Сучасні комп'ютери можуть читати з оперативної пам’яті настільки швидко, що тепер ми вважаємо складність часу пошуку масиву (навіть технічно це не так, оскільки для переміщення регістра на більшу відстань потрібно більше часу, і т. Д.)
Інший приклад - словники Python. Хоча можна отримати складність доступу до словника за допомогою неправильно написаного перевантаженого магічного методу (або смішно невдача, тобто ключі, що мають багато хеш-зіткнень), зазвичай це вважається . У цьому випадку часова складність залежить як від реалізації хеш-таблиці словників Python, так і від виконання ключами хеш-функцій.O ( 1 )__hash__
Чи означає це, що апаратне забезпечення / реалізація можуть впливати на складність часу алгоритмів? (Хоча обидва приклади стосуються структур даних замість алгоритмів, останні будуються на першій, і я ніколи не чув про складність часу структур даних, тому тут я використовую термін "алгоритми")
Для мене алгоритми абстрактні та концептуальні, на властивості яких, як складність часу / простору, не повинно впливати те, чи реалізовано вони певним чином, але чи є вони?