Перейти к основному содержимому

117 записей с тегом "Алгоритмы"

Посмотреть все теги

· 10 мин. чтения

1. Обзор

В этом уроке мы собираемся изучить шифр Цезаря, метод шифрования, который сдвигает буквы сообщения, чтобы создать другое, менее читаемое.

Прежде всего, мы рассмотрим метод шифрования и посмотрим, как его реализовать на Java.

Затем мы увидим, как расшифровать зашифрованное сообщение, если мы знаем смещение, используемое для его шифрования.

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

2. Шифр Цезаря

· 4 мин. чтения

1. Обзор

В этом руководстве мы увидим различные способы проверки того, отсортирован ли список в Java .

2. Итеративный подход

Итеративный подход — это простой и интуитивно понятный способ проверки отсортированного списка. В этом подходе мы будем повторять список и сравнивать соседние элементы. Если какой-либо из двух соседних элементов не отсортирован, мы можем сказать, что список не отсортирован.

Список может быть отсортирован в естественном порядке или в пользовательском порядке. Мы рассмотрим оба этих случая, используя интерфейсы Comparable и Comparator .

· 7 мин. чтения

1. Обзор

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

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

2. Создание перестановок

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

· 4 мин. чтения

1. Введение

Древние римляне разработали собственную систему счисления, называемую римскими цифрами. Система использует буквы с разными значениями для представления чисел. Римские цифры до сих пор используются в некоторых второстепенных приложениях.

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

2. Римские цифры

В римской системе у нас есть 7 символов, которые представляют числа :

· 5 мин. чтения

1. Обзор

В этом руководстве мы рассмотрим конечные автоматы и то, как их можно реализовать в Java с помощью Enums.

Мы также объясним преимущества этой реализации по сравнению с использованием интерфейса и конкретного класса для каждого состояния.

2. Перечисления Java

Java Enum — это особый тип класса, определяющий список констант. Это позволяет реализовать типобезопасную реализацию и сделать код более читаемым .

· 6 мин. чтения

1. Введение

В этой статье мы покажем несколько алгоритмов поиска шаблона в большом тексте. Мы опишем каждый алгоритм с предоставленным кодом и простой математической базой.

Обратите внимание, что предоставленные алгоритмы — не лучший способ выполнения полнотекстового поиска в более сложных приложениях. Чтобы правильно выполнять полнотекстовый поиск, мы можем использовать Solr или ElasticSearch .

2. Алгоритмы

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

· 5 мин. чтения

1. Введение

Целью этой серии статей является объяснение идеи генетических алгоритмов .

Генетические алгоритмы предназначены для решения проблем с использованием тех же процессов, что и в природе — они используют комбинацию отбора, рекомбинации и мутации для развития решения проблемы.

Давайте начнем с объяснения концепции этих алгоритмов на примере простейшего бинарного генетического алгоритма.

2. Как работают генетические алгоритмы

· 4 мин. чтения

1. Введение

В этом уроке мы узнаем об алгоритме градиентного спуска . Мы реализуем алгоритм на Java и проиллюстрируем его шаг за шагом.

2. Что такое градиентный спуск?

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

Градиент — это еще одно слово для обозначения уклона, а спуск означает спуск. Как следует из названия, градиентный спуск идет вниз по склону функции, пока не достигнет конца.

· 7 мин. чтения

1. Введение

В этом руководстве мы познакомим вас с жадными алгоритмами в экосистеме Java.

2. Жадная проблема

Столкнувшись с математической задачей, может быть несколько способов разработать решение. Мы можем реализовать итеративное решение или некоторые передовые методы, такие как принцип «разделяй и властвуй» (например , алгоритм быстрой сортировки ) или подход с динамическим программированием (например , задача о рюкзаке ) и многое другое.

Большую часть времени мы ищем оптимальное решение, но, к сожалению, не всегда получаем такой результат. Однако бывают случаи, когда ценен даже неоптимальный результат. С помощью некоторых конкретных стратегий или эвристик мы могли бы заработать себе такую драгоценную награду.

· 9 мин. чтения

1. Введение

В этом руководстве мы увидим, как работает сортировка кучей, и реализуем ее на Java.

Сортировка кучей основана на структуре данных кучи. Чтобы правильно понять сортировку кучи, мы сначала рассмотрим кучи и то, как они реализованы.

2. Структура данных кучи

Куча — это специализированная древовидная структура данных . Поэтому он состоит из узлов. Мы присваиваем элементы узлам: каждый узел содержит ровно один элемент.