Ну, мы все знаем, что в эпоху программирования существует множество логик и алгоритмов для решения конкретной постановки задачи, поэтому найти решение не так уж сложно, но на самом деле важно найти оптимизированное решение, которое дает быстрые и правильные результаты. Просто, когда мы заказываем продукты через instamart у swiggy, несмотря на то, что у него много темных магазинов по всему городу, он выберет темный магазин, который находится рядом с вашим местоположением. Это ускоряет доставку одних и тех же продуктов и делает клиентов счастливыми. Таким образом, время в основном играет очень важную роль, при кодировании нам нужно найти лучший алгоритм, который быстро выполняется, дает правильный результат, а также не требует дополнительных затрат.

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

Двумя основными факторами для анализа алгоритма являются временная сложность и пространственная сложность. Время — это, по сути, количество времени, которое требуется алгоритму для получения ожидаемых результатов. Пространство — это в основном количество ресурсов, которые алгоритм использует, например, пространство в памяти.

Временная сложность: прежде чем перейти к этому, нам нужно рассмотреть пример. Представьте, что есть два мобильных телефона Android с разной оперативной памятью, например, 8 ГБ и 16 ГБ, когда игра BGMI установлена ​​​​на двух мобильных телефонах, и пользователь начинает чувствовать, что мобильный телефон 16 ГБ работает быстро и хорошо по сравнению с 8 ГБ. Таким образом, мы можем понять, что, хотя одно и то же программное обеспечение или программа установлены на двух устройствах, скорость выполнения различается в зависимости от емкости устройства, поэтому мы не можем анализировать скорость приложения на основе устройства, поскольку она варьируется.

Точно так же при анализе временной сложности алгоритма у нас есть несколько факторов, которые мы игнорируем при анализе, на рынке доступны разные машины с разными конфигурациями, такими как

  1. Архитектура: Это может быть 32-битный или 64-битный процессор.
  2. Режим выполнения: может быть последовательным или параллельным
  3. Процессор: одноядерный или многоядерный
  4. Скорость работы: чтение и запись

Все вышеперечисленные факторы варьируются от одной машины к другой, поэтому мы просто игнорируем их, поскольку непросто анализировать алгоритмы для всех разных машин, и, наконец, мы анализируем данный алгоритм на основе заданных входных данных.

Для анализа мы рассматриваем модельную машину как базовую машину для вычисления пространственно-временной сложности, конфигурации которой представляют собой 32-битную архитектуру, одно ядро, последовательное выполнение и одну единицу времени для основных операций, таких как чтение, запись и назначение. Во всех последующих главах мы будем рассматривать эту модель машины для анализа.

Для простого предположения мы считаем,

  1. в а;
  2. в а, б, в;
  3. a=b+c;
  4. if(a>0)

Все эти операторы занимают только одну единицу времени, поскольку они считаются однострочными операторами.

Космическая сложность:

Это простая концепция. Считаем, что одна единица памяти занята одной переменной. Например: int a, b. Здесь две переменные означают 2 единицы, хотя дальнейшие операции над ними выполняются, нам не нужно рассматривать другую единицу памяти для той же переменной, которую вы лучше поймете, рассмотрев пример.

Ex

функция подкачки (а, б) {

темп=а;

a=b;

б=температура;

}

Сложность времени:

Здесь в функции у нас есть 3 строки, и каждая строка занимает одну единицу времени, поэтому total = 1 x 3 = 3, что является постоянным числом, для логики или алгоритма, занимающего постоянное время, временная сложность O (1) это это потому, что, как мы сообщали ранее, временная сложность изменяется в зависимости от ввода, так как здесь нет ввода, и все операторы занимают постоянное время, поэтому это O (1).

Космическая сложность:

Переменные a, b и temp занимают 3 единицы памяти. Это также постоянно, поэтому значение равно O (1), что является большим O из 1.

Увидим дальнейшие темы в следующих блогах.