Доброе утро. Такой вопрос: есть ли какие-то практически полезные меры вычислительной

мощности (в смысле computational complexity) для реальных машин, с ограниченными ресурсами (и можно даже для конечного размера входа)?

Т.е. теоретически-то все они эквивалентны конечным языкам / Deterministic acyclic finite state automaton, но толку от этого на практике никакого нет, а разница всё же очень даже есть.

К примеру, если известно, что есть:
a) интерпретатор конечных автоматов и
b) интерпретатор любого "обычного" PL,
и каждому предоставлены одинаковые конечные ресурсы, то очевидно, что с помощью (b) получится распознать гораздо большее подмножество языка корректно вложенных скобок, чем с помощью (a).

Есть у кого-то идеи, как могут называться такие меры (или где бы поискать или спросить)?

15 ответов

62 просмотра

Существует несколько вещей, которые пришли на память, хотя я не могу сказать, как это ложится на алгоритмические сложности, так что извините, все в одну кучу, что относится к скорости. Latency для конкретных операций CPU, они известны для операций процессора, и для операций с шиной памяти. CLOCK Тактовая частота процессора. Вы не можете выполнить алгоритм быстрее, чем пройдут такты обработки операций, зависящих друг от друга. Branching. Операции алгоритма, которые можно теоретически обрабатывать параллельно, могут обрабатываться быстрее за счет спекулятивного исполнения на нескольких конвеерах. Таким образом, алгоритмы, которые работают без ветвления (branching) исполняются в целом быстрее, так как branching исключает спекулятивное исполнение. SIMD. Это и бренд конкретной технологии, и концептуальное название семейства технологий, когда за одну инструкцию исполняется несколько операций. Типичное применение - операции над компонентами векторов, которые выполняются одной инструкцией. Можно до нескольких десятков элементов обрабатывать таким образом. Где-то рядом лежат битовые операции, позволяющие спекулировать тем фактом, что бинарные числа содержат компоненты - биты. Можно за один ход исполнять операций. Концептуально это тоже SIMD - Single Instruction Multiple Data. Структуры данных, которые используются внутри функциональных элементов. Например, внутри кеша первого уровня есть LRU Cache, или что-то подобное, что влияет на Latency Cache locality - алгоритм исполняется быстрее, если элементы лежат рядом в памяти, что уменьшает latency доступа к соседним элементам одним за одним. По сути, чтобы рассчитать настоящую сложность алгоритма, нужно рассчитать алгоритмичнескую сложность низлежащих алгоритмов и структур, которые обслуживают CPU. Тот же LRU внутри кеша процессора.

Еще забыл важную вещь - существует TPU и Operations per Watt. Существует специфическая теплопроводность материалов, из которых изготавливают процессор, и это ограничение и для тактовой частоты и для степени параллелизма процессора. Например, если вы будете много использовать AVX операции, процессор перегреется и сбросит тактовую частоту. Таким образом, вы не можете закачать в CPU больше ватт, чем может отвести система теплоотведения.

George Polevoy
Еще забыл важную вещь - существует TPU и Operation...

Ну и наконец - соотношение теоретического предела скорости распространения электромагнитных колебаний и размера элементарных узлов процессора - транзисторов. Сейчас транзисторы сопоставимы с характерными размерами атома. Атом это ±1 ангстрем, 0.1 нанометр. Размеры транзисторов (или их частей) это сейчас единицы нанометров, то есть десятки ангстрем, значит там толщина в несколько десятков атомов. Человечество вплотную приблизилось к минимальному размеру деталей процессора, и дальше более плотно расположить их не получится, а значит вступает ограничение по скорости света.

можно расположить больше одного атома в объеме равном "объему атома"

Evgenii Zheltonozhskii🇮🇱
можно расположить больше одного атома в объеме рав...

Я не силен, в физике атома, не могу возразить ничего. Наверное можно говорить скорее о характерном расстоянии между атомами в кристаллической решетке или аморфном веществе материала.

Evgenii Zheltonozhskii🇮🇱
можно расположить больше одного атома в объеме рав...

Вспомнилась статья “Химии и жизни”, под названием “Давишь его давишь, а оно пухнет!”. Типа под давлением атомы газа “прячутся” в кристаллической решетке металла, и он распухает от этого.

Yaroslav-Schekin Автор вопроса
George Polevoy
Еще забыл важную вещь - существует TPU и Operation...

В плане ограниченных ресурсов я (как и любая теория сложности!) имел в виду то, что у машины есть N байт для хранения программы и K байт для данных и т.п., например. Никто не рассчитывает на то, что время в мире внезапно кончится, понимаете? ;) А мне кажется, что Вы как-то так прочитали вопрос...

Хмм, а как сделать структуру меньше размера атома?

Vladislav 🇺🇸🚜
Хмм, а как сделать структуру меньше размера атома?

Давай начнем с того как ты определяешь размер атома

Evgenii Zheltonozhskii🇮🇱
Давай начнем с того как ты определяешь размер атом...

Как величину порядка шага кристаллической решётки

Vladislav 🇺🇸🚜
На какую?

Это детали реализации. Сказать что одна конкретная решетка этот фундаментальное ограничение -- странно

Vladislav 🇺🇸🚜
У нас конечное множество решёток

У одной решетки может больше одного минимума энергии

Похожие вопросы

Обсуждают сегодня

Всем привет Есть достаточно базовая задача: Дан неориентированный граф. Требуется определить, есть ли в нем цикл, и, если есть, вывести его. Входные данные подаются в виде ма...
Αλeksandr
10
Привет всем. Подскажите, как можно данную задачу более менее эффективно решить? В столовой одного известного Завода вот-вот начнётся обед. На обеде есть три гарнира — макарош...
Vitaliy
6
всем привет. У меня есть неупорядоченный массив точек(в моем случае в трёхмерном пространстве). Есть критерий связанности точек: если евклидово расстояние между ними меньше за...
Павлик Ливаткин
31
Всем привет Пытаюсь решить следующую задачу: https://informatics.msk.ru/mod/statements/view.php?id=6992&chapterid=101#1 Строка S была записана много раз подряд, после чего из ...
Αλeksandr
10
Здравствуйте. Есть задача нужно найти наименшое число P где фактриал P делиться на 10^N. Ограничения 10^9. Знаю что нужно найти такой P в конце как минимум N нулей. Решение с ...
. Azmiddin
20
Друзья, практический вопрос надо счиать скользящую медиану в последовательности по заданному окну (длины N) тупой вариант - взять значения в окне, отсортировать, взять элеме...
Стас Выщепан
17
Должна-ли работать такая стратегия: Мы каждую секунду бросаем монетку - орел или решка. Если орел - покупаем акцию на все деньги, если у нас есть деньги, или продаем все акци...
George Polevoy
13
#pragma once #include <iostream> #include <vector> template <typename T, typename Comp = std::less<T>> class Heap { public: Heap() = default; Heap(const std::vector<T>&...
Степан
1
Как можно сжимать временные ряды в памяти? У меня есть исторические стоимости ценных бумаг. Данные для каждой минуты в истории OHLC (Open, High, Low, Close). Соответственно, O...
George Polevoy
10
Всем привет Есть задача про интервалы - https://ejudge.lksh.ru/archive/2014/12/Ccpp/day01/01.pdf?ysclid=lhaombs4s4535475456 Думал как решить задачу быстрее, чем за квадрат, но...
Αλeksandr
18
Карта сайта