Нахождение наибольшего f, удовлетворяющего заданному свойству f, не убывает в его аргументах

это было ошибкой мне какое-то время.

Допустим, у вас есть функция f x y, где x и y являются целыми числами, и вы знаете, что f строго не убывает в своих аргументах,

т.е. f (x + 1) y> = f x y и f x (y + 1)> = f x y.

Каков был бы самый быстрый способ найти наибольший fxy, удовлетворяющий свойству, учитывая, что x и y ограничены.

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

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

Спасибо!

Редактировать: Видя комментарии ниже, свойство может быть любым

Учитывая свойство g (где g принимает значение и возвращает логическое значение), я просто ищу наибольшее f такое, что g (f) == True

Например, наивная реализация ( в haskell) будет:

maximise :: (Int -> Int -> Int) -> (Int -> Bool) -> Int -> Int -> Int
maximise f g xLim yLim = head . filter g . reverse . sort $ results
    where results = [f x y | x <- [1..xLim], y <- [1..yLim]]
7
задан Charles Durham 10 June 2011 в 03:50
поделиться