不返回任何内容的递归算法的时间复杂度

时间:2019-05-15 15:27:33

标签: recursion time-complexity

我正在研究一个处理0-1背包问题的项目,在该项目中,我需要研究解决/近似解决方案的不同方法。

第一个算法是回溯方法。我需要确定这一个的时间复杂度:

Knapsack(length, currentWeight):
    global currentSolution, optimalSolution, optimalValue
    if(length == N) then
        if(sum(i = 1 to numberItems of vi * xi) > optimalValue) then
            optimalValue = sum(i = 1 to numberItems of vi * xi)
            optimalSolution = currentSolution
        end
    else
        if(currentWeight + weights[length] <= maxWeight) then
            currentSolution[length] = 1
            Knapsack(length + 1, currentWeight + weights[length])
            currentSolution[length] = 0
            Knapsack(length + 1, currentWeight)
        else
            currentSolution[length] = 0
            Knapsack(length + 1, currentWeight)
        end
    end

我不知道从何处以及如何开始。我在课堂上看到的示例是算法,其中每次递归调用时数据大小都会减小。 我是否应该只考虑最坏的情况,即所有递归调用都是从第一部分(其中currentWeight + weights[length] <= maxWeight为真)进行的?

谢谢!

0 个答案:

没有答案