Рубрики
Алгоритмы Графы "поиск el"

Графы Алгоритм «поиск в ширину»

не важно

длительный этот путь или нет, а самое

главное

количество пройденных участков или существует ли путь

ЗАДАЧА

Найти путь из точки A в точку B за минимальное количество шагов

Процесс решения

задаём для каждой вершины название
создаём объект, который содержит вершины (содержит путь к точке B)

используется Cтруктура Данных «очередь»

  • состоит из каких то элементов
  • элементы всегда добавляются в конец структуры, а извлекаются из её начала
  • тот кто пришел на кассу первым — уходит первым
  • тот кто пришел на кассу последним — уходит последним
  • FIFO FIRST IN FIRST OUT
Рубрики
Алгоритмы Графы "поиск el"

Графы Алгоритм «Дейгстры»

алгоритм поиска кратчайшего пути в графе

Важно

учитывается длинна пройденного ребра — вес

Задача

стартовая точка A
конечная точка G

A—B—F—G
|       / |
|      /  |
|     /   |
|    D  |
|   /     |
|  /      |
|/        |
C——E

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

На втором этапе мы помечаем эти (B и C) вершины как рассмотренные,

На третьем этапе мы рассматриваем вершины, на которые мы можем попасть из точек B и C и в таблице записываем значения из точки A до точек, которые мы достигаем из вершин B и С. Опять же помечаем эти точки, как уже рассмотренные.

На следующем этапе мы достигаем конечной точки G, но у нас происходит перерасчет (мы находим путь до F, до которого оказывается короче и перезаписываем значение в таблице).

И на следующем этапе мы проделываем тоже самое и находим самый оптимальный путь и узнаем, что из точки A в точку G мы можем добраться за пять условных единиц.

Рубрики
Графы

Графы «Матрица Смежности»

  • двумерный массив
  • граф представляют в виде матрицы смежности
  • вершины столбцы и строчки
  • есть путь — на перекрестие ставится 1
  • нет пути — на перекрестии ставится 0
Рубрики
Графы

Графы «понятие»

  • абстрактная структура данных
  • представляет множество вершин
  • набор рёбер — соединений между пару вершин

Пример

карта — города(вершины), которые соединены маршрутами (ребрами)

Какие бывают РЕБРА

  • однонапраленные
    идут слева на направа, а обратно мы возвращаться не можем
  • двунаправленные
    из A в B и B в A можем попасть
Рубрики
Алгоритмы Массивы "cортировка"

Массивы «Быстрая сортировка» (Хоара)

O(log2n*n)
самый быстрый

разделяй и властвуй

делим массив на подмассивы и каждый раз рекурсивно
мы выбираем опорный элемент у каждого массива
его можно выбрать случайно, но часто центрально
пробегаемся по массиву и все элементы, которые меньше опорного, добавляем в один массив, все которые больше, добавляем в другой массив.
После такой операции у нас получается два массива
меньшими числами и с большими числами чем опорные).

Для каждого из этих массивов выполняется точно такая же операция. В каждой из этих массивов выбирается опорный элемент и происходит сортировка и так происходит до тех пор, пока длина массива становится равна единице (именно это условие и будет базовым случаем выхода из рекурсии).

И после этих операций эти маленькие массивы склеиваются в один большой.

const arr=[1,4,5,8,51,2,7,5,5,2,11]//[0,1,1,2,3....]
let cnt=0;

function quickSort(arr){
 if (arr.length<=1){
  return arr
}
let pivotIndex = Math.floor(arr.length/2);
let pivot=arr[pivotIndex]
let less=[]
let greater=[]

for(let i=0;i<arr.length;i++){
 cnt+=1
 if(i===pivotIndex)
  continue;
 if(arr[i]<pivot){
  less.push(arr[i])
} else {
 greater.push(arr[i])
}
return [...quickSort(less),pivot,...quickSort(greater)]
}

console.log(quickSort(arr))
console.log(cnt);