Рубрики
Без рубрики

Максимальный алгоритм прибыли в Python

Введение Python: Сегодняшняя тема – это максимальный алгоритм прибыли.

Автор оригинала: Chris.

В этой статье представлена алгоритмическая проблема с практической ценностью для анализа фондового рынка. Например, предположим, что вы торгуете криптовалюту Ethereum. Сколько прибыли в долларах вы можете сделать, покупая низкие и продажи высоко на основе исторических данных?

Максимальная прибыль основного алгоритма

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

# Profit of a single
# buying low and selling high
def maximumProfit(A):
    m = 0
    for i in range(0, len(A)):
        for j in range (i + 1, len(A)):
            m = max(m, A[j] - A[i])
    return m

# Ethereum daily prices in Dec 2017 ($)
prices = [455,460,465,451,414,415,441]
print(maximumProfit(prices))
# 27

Упражнение : Возьмите предположение – каково вывод этого кода-фрагмента?

Максимальное описание алгоритма прибыли

Функция Максималпрофит принимает входную последовательность A, например Неделя цен Ethereum в декабре 2017 года. Он возвращает наибольшую прибыль покупки низкой и продажи высоко.

Алгоритм работает следующим образом:

Это итерации по всем показателям последовательности Я , точки покупки, а также над всеми индексами последовательности J> I , то есть очки продажи. Для каждой пары покупки/продажи (Я, j) , он рассчитывает прибыль как разницу между ценами на продаже и очках покупки, то есть [J] -A [I] Отказ Переменная Прибыль поддерживает максимально возможную прибыль: 27 долларов на 414 доллара вложенного капитала.

Эта реализация имеет квадратичное время выполнения, поскольку вы должны проверить O (N * N) различные комбинации очков покупки и продажи. Вы узнаете о решении линейного времени выполнения позже.

Альтернативный максимальный алгоритм прибыли с нарезкой

Вот небольшой вариант вышеуказанного алгоритма:

# Profit of a single
# buying low and selling high
def maximumProfit(A):
    m = 0
    for i in range(0, len(A)-1):
        buy, sell = A[i], max(A[i+1:])
        m = max(m, sell-buy)
    return m

# Ethereum daily prices in Dec 2017 ($)
prices = [455,460,465,451,414,415,441]
print(maximumProfit(prices))
# 27

Это немного более читаемое и использует нарезку вместо второго вложенного для петли.

Альтернативный максимальный алгоритм прибыли – линейное время выполнения

Следующий алгоритм имеет линейную среду выполнения и гораздо более эффективно для однопродуемого алгоритма максимального прибыли:

def maximumProfit(A):

    buy, m = 0, 0
 
    for i in range(len(A)):
        buy = min(buy, A[i])
        profit = A[i] - buy
        m = max(m, profit)
 
    return m

# Ethereum daily prices in Dec 2017 ($)
prices = [455,460,465,451,414,415,441]
print(maximumProfit(prices))
# 27

Максимальная прибыль Python головоломка

Прежде чем покажем вам решение максимального примера прибыли в коде – можете ли вы решить этот код для головоломки на нашем интерактивном приложении Python Puzzle?

Нажмите, чтобы решить упражнение и проверить свои навыки Python!

Вы мастер-кодер? Проверьте свои навыки сейчас!

Связанное видео.

Решение

Максимальная прибыль в приведенном выше алгоритме покупки низких и продающих высоких для списка цен [455 460,465 451,414,415 441] является:

27

Вы покупаете на 414 долл. США и продаем на 441 доллар, что приводит к прибыли в размере 441-41 долл. США = 27 долларов.

Не могли бы вы стать лучшими кодерами Python в вашей среде? Вот решение, которое вы не пожалеете: присоединяйтесь к моим академии электронной почты Python. Это самая комплексная академия электронной почты Python в мире!

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python одноклассники (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

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

Оригинал: “https://blog.finxter.com/daily-python-puzzle-maximum-profit-algorithm/”