Ответы пользователя по тегу Алгоритмы
  • Как сделать сортировку матрицы?

    akhmelev
    @akhmelev
    программист
    Медленно, но без потерь памяти - перестановками. Т.е. если не очень важна скорость используйте сортировку хотя бы тем же пузырьком, но двухмерную. Перебираем все элементы матрицы двигаясь по побочным диагоналям 11 12 21 13 22 31.... Каждый элемент нужно сравнить с 8 элементами вокруг него (хотя, на самом деле хватит и трех, правее, ниже, правее-ниже) и найти наилучшего кандидата на обмен местами. Сравнение вести по сумме x+y или лучше по квадрату длины вектора (x^2+y^2). Повторять перебор матрицы пока есть обмены. Т.к. самый тяжёлый элемент упадёт в конец матрицы, можно каждый новый проход делать не единицу короче.

    Есть много способов ускорить это дело через дополнительные массивы и индексы. Простейший способ как отмечалось выше: развернуть в одномерный (по побочным диагоналям), отсортировать эффективным алгоритмом (коих море) по тому же критерию x^2+y^2, свернуть обратно в двухмерный.

    Все умозрительно. Надо проверять.
    Ответ написан
    Комментировать
  • Восстановление поврежденного изображения нейронной сетью?

    akhmelev
    @akhmelev
    программист
    Просто мысль.

    Если ИНС это принципиально важно, то вам возможно подойдет обычная ИНС, но малюсенькая и с узким горлом (малое число нейронов в скрытом слое).

    Жутко медленный алгоритм:
    1) обучаем сетку бегающим окном 3x3 (или около того) по полю 15x15 (как ассоциативную память, т.е. окно вход и выход).
    2) после обучения сеть будет аппроксимировать поверхность т.е. сгладит шум, для этого важен малый размер сети и ранний останов обучения.
    3) выход сети для всех положений окна запоминаем, усредняем результаты попиксельно.
    4) далее смещаем квадрат 15x15 и весь процесс повторяется. Смещение должно быть с перекрытием (т.е. меньше чем на 15 пикселей) иначе стыки вылезут.

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

    P.S. А вообще тут имхо уместна обычная нелинейная регрессия или что-то типа сплайнов, но для двух входных переменных.
    Ответ написан