154 lines
12 KiB
Markdown
154 lines
12 KiB
Markdown
Решение задач компьютеров без компьютеров
|
|
# Логарифмическая линейка
|
|
- Устройство, позволяющее выполнять несколько математических операций: умножение, деление, возведение в степень (квадрат и куб), вычисление корней (квадрат и куб), логарифмов, вычисление тригонометрических и гиперболических функция и т.п.
|
|
- Принцип расчета - воплощение таблицы значений в виде, позволяющем быстро находить нужные зависимости
|
|
- Расчет производится путем выставления линейки в требуемое положение и считывания результата
|
|
|
|
![[Лог линейка.png]]
|
|
### Линейка и операция деления
|
|
|
|
![[Деление на линейке.png]]
|
|
|
|
Двигаем делимое напротив делителя, в начале получаем частное
|
|
### Номограмма и операция умножения
|
|
|
|
![[Номограмма.png]]
|
|
|
|
Соединяем две точки, которые хотим перемножить. Пересечение этого отрезка с осью Y - наш результат
|
|
# Табличное исполнение
|
|
- Таблица истинности
|
|
- Таблицы предрасчитанных значений:
|
|
- cache
|
|
- memoization
|
|
- STR division
|
|
# Арифмометр
|
|
- Устройство, позволяющее складывать, вычитать, умножать и делить с фиксированным количеством разрядов
|
|
- Принципы расчета воплощены в мехнизмах устройства
|
|
- Расчет производится по шагам (алгоритмически), с учетом переноса между разрядами
|
|
|
|
![[Арифмометр.png]]
|
|
# Отличие арифмометра от логарифмической линейки
|
|
1. Рост области определения функций:
|
|
- для арифмометра: медленный рост сложности устройства, средний рост длительности расчета (зависит от функции)
|
|
- для линейки/таблицы: быстрый рост размера линейки, минимальный рост длительности расчета
|
|
2. Рост области значений функции:
|
|
- для арифмометра: медленный рост сложности устройства, средний рост длительности расчета (зависит от функции)
|
|
- для таблицы: средний рост размера таблицы, минимальный рост длительности расчета (просто новая строка, сопряженно с областью определения)
|
|
- для линейки: быстрый рост размера линейки или погрешности, минимальный рост длительности расчета
|
|
3. Линейка - аналоговое устройство (есть датчик, отсюда погрешность расчетов )
|
|
4. Арифмометр/Таблицы - цифровое устройство (однозначный результат, погрешность определяется конструкцией)
|
|
# Расчет артиллерийских таблиц. Белковые вычислители
|
|
- Задача: расчет артиллерийских таблиц для французской или российской армий
|
|
- Вычислительная задача: многократный расчет сложной формулы с большим количеством операций для различных входных параметров
|
|
### Средства
|
|
1. Простейшие счетные устройства в ограниченном количестве
|
|
2. Математики, физики и другие ученые
|
|
3. Офицерский корпус и грамотные солдаты
|
|
### Проблемы наивного решения
|
|
(человек + лист + карандаш = сиди читай)
|
|
1. Ошибка выбора операции (после долгой работы замылится глаз)
|
|
2. Регистровый файл ненадежен (почерк, адресация)
|
|
3. Арифметические ошибки
|
|
4. Склонность людей к сокрытию ошибок
|
|
### Архитектура эффективного решения
|
|
Реконфигурируемый потоковой вычислитель
|
|
|
|
![[Потоковый вычислитель.png]]
|
|
|
|
1. Расчетная формула представляется в виде графа
|
|
2. Каждой вершине графа сопоставляется человек, способный выполнить соответствующую операцию (только одну)
|
|
3. Люди размещаются в соответствии с графом, каждый знает, кто сообщит входные данные, кому сообщить результат
|
|
4. На вход графа подаются параметры для расчетов
|
|
5. На выходе собираются результаты
|
|
6. Для повышения надежности расчетов используются двоирование (две роты, сравниваем результаты, не совпадение - повтор)
|
|
### Структура белкового вычислителя
|
|
|
|
![[Белковый вычислитель.png]]
|
|
### Достоинства
|
|
1. Радикальный рост производительности (параллелизм инструкций)
|
|
- Параллельное исполнение независимых операций
|
|
- Конвейризация расчетов - каждая вершина постоянно считает, без простоев (набор данных за 5 тактов - параллелизм, 3 набора данных за 7 тактов - если пустить данные непрерывно)
|
|
2. Радикальный рост надежности
|
|
- Высокий уроень специализации узлов
|
|
- Минимальная вариативность процесса
|
|
3. Возможность реконфигурации вычислителя под новую задачу
|
|
|
|
![[Конвейризация расчетов.png]]
|
|
|
|
Цвета - 3 партии входных данных. Цифры - на каком такте будут на данном этапе вычисления
|
|
### Практика
|
|
На практике все перечисленные механизмы встречаются в современных [[Компьютерные системы|компьютерных системах]], в том числе:
|
|
- В процессорах общего назначения
|
|
- В специализированных процессорах
|
|
- В распределенных системах
|
|
# Жаккардовый ткацкий станок и программное управление
|
|
Жаккард - ткань с узором, на обратной стороне которой можно видеть инвертированный рисунок
|
|
Структура полотна:
|
|
- вертикальные нити - натянуты равномерно
|
|
- горизонтальные нити разных цветов, дисбаланс петель с одной из сторон формирует узор
|
|
|
|
![[Жаккард.png]]
|
|
### Проблема создания станка
|
|
Плетение полотна:
|
|
1. Нити разделяются на верхние и нижние по схеме узора
|
|
2. Между ними пропускается челнок с горизонтальной нитью
|
|
3. Повтор
|
|
Узор - уникальный или циклический
|
|
Проблема: разделение верхней и нижней нити
|
|
- Разделение на верхнюю и нижнюю нить нерегулярно
|
|
- "Гребенка" не работает
|
|
|
|
![[Обычный ткацкий станок.png]]
|
|
### Жаккардовый ткацкий станок
|
|
Считается первой программно-управляемой машиной
|
|
Элементы решения:
|
|
- "Гребенка" заменена на систему крючков на пружинах с поворотным механизмом
|
|
- Нажатие на ключок позволяет зацепить нить
|
|
- Сильное нажатие и поворот - освободить нить
|
|
- Как автоматизировать регулярное нажатие на кнопочки?
|
|
|
|
![[Идея крючка 1.png]]
|
|
|
|
Идея крючка
|
|
|
|
![[Идея крючка 2.png]]
|
|
### Программное обеспечение
|
|
Элементы решения:
|
|
- Пластина с отверстиями позволяет разом "нажать" нужные крючки (перфокарта)
|
|
- Лента из пластин - программа узора
|
|
|
|
![[Жаккард программное решение.png]]
|
|
|
|
Структура шага работы станка:
|
|
1. Нажатие пластиной на крючки (разделение верхней и нижней)
|
|
2. Пропускание челнока
|
|
3. Нажатие всех крючков и поворот (отпускание нитей)
|
|
4. Сдвиг ленты с пластинами
|
|
5. Повтор
|
|
### Практика станка
|
|
- Механика, по сути, не изменилась
|
|
- Принцип работы - тот же
|
|
# Автоматические телефонные станции (АТС)
|
|
Будет потом
|
|
# Поиск кратчайшего пути на взвешенном графе
|
|
Классический алгоритм Дейкстры имеет сложность `O(n^2)`. Имеетя огромное количество оптимизаций и эвристических приемов для сокращения вычислительной сложности
|
|
Проблема: дорожная карта региона
|
|
### Альтернативное решение
|
|
- Изготавливаются натуральная модель взвешенного графа, где:
|
|
- Вершины - контактные площадки
|
|
- Ребра - проводники с сопротивлением, обратно пропорциональным весу ребра
|
|
- Подается питание на интересующие вершины графа
|
|
- Наблюдается цепочка сгоревших/нагревшихся проводников
|
|
Площадь `O(n+e)`
|
|
Время `O(n)`
|
|
# Задача коммивояжера и амеба
|
|
Задача коммивояжера - поиск самого выгодного маршрута, проходящего через указанные города хотя бы по одному разу с последующим возвратом в исходный город
|
|
Решение перебором - `O(n!)`
|
|
Динамикой - `O(n^2 * 2^n)`
|
|
### Альтернитивное решение
|
|
Амеба любит питательную среду, не любит свет, стремится занять максимальную площадь
|
|
Заявленные результаты:
|
|
- Линейный рост скорости поиска от количества городов (до 8 штук)
|
|
- При росте вычислительной сложности по экспоненте
|
|
|
|
Как развитие и скачок произошел переход к использованию электричества в сигналах и состояниях. ([[Цифровая схемотехника]]) |