Рубрика: Алгоритмы

Реализация алгоритмов на C#

C# — хэширование данных с использованием соли

Всем привет! Сегодня рассмотрим пример, хеширования разными алгоритмами с добавлением так называемой salt соли. Salt это всего лишь несколько бит информации прибавленной к вашему паролю к примеру. Как это выглядит допустим у вас пароль 12345+qwe. Где qwe и есть соль, но все это проходит обертку хеш алгоритмом, и приобретает не читабельный вид. Однако имеются приложения […]

Пример реализации жадного алгоритма на C#

В этом примере мы обсудим оптимальное решение для решения проблемы размена денег с помощью жадного алгоритма. Жадный алгоритм-это тот, который всегда выбирает лучшее решение в то время, без учета того, как этот выбор повлияет на будущие выборы. Здесь мы обсудим, как использовать жадный алгоритм для размена денег. Было доказано, что оптимальное решение для размена денег […]

Кодирование по алгоритму Хаффмана с помощью словаря на C#

Кодирование Хаффмана-это алгоритм сжатия данных без потерь. Идея заключается в том, чтобы присвоить коды переменной длины входным символам, длины присвоенных кодов основаны на частотах соответствующих символов. Самый частый символ получает наименьший код, а наименее частый символ — самый большой код. Node.cs : using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace HuffmanTest { public class […]

C# — поиск в глубину(DFS) с помощью списка.

Поиск в глубине (DFS) — это алгоритм для обхода или поиска структур данных дерева или графика. Он начинает с корня (выбирая некоторый произвольный узел в качестве корня в случае графа) и исследует как можно дальше вдоль каждой ветви, прежде чем вернуться назад. using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace DefthFirst { class Program { […]

C# — поиск в ширину (BFS) с использованием очереди.

В этом примере мы напишем программу на языке C# для реализации поиска в ширину (BFS) с помощью Queue Поиск в ширину (BFS) — это алгоритм для обхода или поиска структур данных дерева или графа. Он начинается с корня дерева (или некоторого произвольного узла графа) и сначала исследует соседние узлы, прежде чем перейти к соседям следующего […]

Реализация алгоритма Dijkstra для определения кратчайшего пути на C#

В этой статье мы изучим на c# реализацию алгоритма Dijkstra для определения кратчайшего пути Алгоритм Дейкстры-это алгоритм нахождения кратчайших путей между узлами в графах . Он был разработан компьютерным ученым Edsger W. Dijkstra в 1956 году.Этот алгоритм помогает найти кратчайший путь от точки на графике (источника) до места назначения. using System; using System.Collections.Generic; using System.Linq; […]

Реализация алгоритма Floyd-Warshall на C#

В этой статье мы изучим на c# реализацию алгоритма Флойда-Уоршолла для определения кратчайших путей во взвешенном графе с положительными или отрицательными весами ребер. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; namespace FloydWarshallAlgorithm { class FloydWarshallAlgo { public const int cst = 9999; private static void Print(int[,] distance, int verticesCount) { Console.WriteLine(«Кратчайшее расстояния […]

Реализация алгоритма Bellman-Ford на C#

В этом примере мы изучим реализацию на языке C# алгоритма Беллмана–Форда для определения кратчайших путей от одной исходной вершины до всех остальных вершин в взвешенном графе using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; namespace BellmanFordAlgorithm { class BellmanFordAlgo { public struct Edge { public int Source; public int Destination; public int Weight; […]

Решение Задачи «Рюкзак» на C#

Приветствую всех, сегодня рассмотрим алгоритм решения задачи «Рюкзак». По условию задания у нас есть набор предметов. У каждого предмета есть вес и цена. Нужно собрать рюкзак, уложившись в предел веса(40 кг) и обеспечив максимальную стоимость содержимого. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Knapsack { class KnapsackAlgorithm { public static int […]

Реализуем Алгоритм Грубой Силы «BruteForce» на C#

Приветствую всех! Многие из вас встречали утилиты по BruteForce, а сегодня мы с вами его сами напишем и рассмотрим его реализацию. Грубый поиск или исчерпывающий поиск, также известный как генерация, подбор символов и тестирование, является очень общим методом решения проблем, который состоит из систематического перечисления всех возможных вариантов решение и проверки того, удовлетворяет ли каждый […]