![]() |
|
|
![]()
|
|
| Crait |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 244 Регистрация: 20.2.2003 Репутация: 1 Всего: 1 |
Привет, уважаемые.
Помогите, плиз, с реализацией, ну, или с алгоритмом быстрого поиска в двумерном (несортированном) массиве, работающего оптимальнее простого сравнения, вот как, например, поиск Бойера-Мура для строк. Пробовал придумать сам - уж очень наворочено получается. Кто-то тут, помнится, говорил, что для этих целей подходит двумерное преобразование Фурье. Можно подробнее ? |
|||
|
||||
| Abrek |
|
|||
|
Unregistered |
Я так понимаю, что нужно найти наперед заданное число в двумерном массиве (те его индексы i и j).
Если так, то можно применить метод половинного деления. Делишь массив по одной из размерностей пополам и ищеш там число(перебором). Если находишь - хорошо, а не находишь - делишь пополам другую половину массива по другой размерности. И т.д. Работать будет в любом случае быстрее чем прямой перебор. Максимум в два раза, ну а минимум... зависит от размерности |
|||
|
||||
| Crait |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 244 Регистрация: 20.2.2003 Репутация: 1 Всего: 1 |
Найти надо не число, а матрицу (меньшей размерности, чем массив,
где осуществляется поиск). Второе. Массив НЕ СОРТИРОВАН. Так что метод половинного деления не катит |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
если никакой дополнительной информации об элементах нет, то никакие ухищрения не помогут.
двумерное преобразование Фурье при вычислении использует значение функции в каждой точке, а значит уже будет вычислительно сложнее простого сравнения -------------------- qqq |
|||
|
||||
| Crait |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 244 Регистрация: 20.2.2003 Репутация: 1 Всего: 1 |
Ну почему же, при вычислении коррелляционных функций
одномерных сигналов FFT позволяет очень заметно сэкономить на количестве операций (O(N*log(N)) вместо O(N*N)). |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |