如何解决递归T(n)= T(n-c)+ T(c)+ n ^ 2

时间:2018-06-16 18:38:41

标签: algorithm tree recurrence

我有重复功能 T(n)= T(n-c)+ T(c)+n²

您可以解释在下列情况下如何计算递归树的高度:

  1. c 具有不确定的值
  2. c = n / 3 => T(n)= T(n-(n / 3))+ T(n / 3)+n²
  3. 我认为在第一种情况下,T(n)成本为θ(n³),在第二种情况下为θ(n²),是不是?

1 个答案:

答案 0 :(得分:1)

1)如果c是一个常数,那么你可以忽略T(c)项,它确实是θ(n³)

2)当它是n/3或其他因素时,查找T()n最大系数的T项 - 这会导致最长的分支。然后通过用这一个替换所有其他T(2n/3) + T(n/3) + n² < 2T(2n/3) + n²项来给出时间复杂度的上限。

示例:θ(n²)Master theorem这确实是#!/usr/bin/perl -w # use 5.010; use strict; use Data::Dumper; use Getopt::Long qw(GetOptions); my @person = [ "John", "Barnes" ] ; my @results = [ ['Chemisty', '87'], ['French', '40'], ['Maths', '90'] ] ; my @record = [ @person, @results ]; my $person_len = scalar @person; my $results_len = scalar @results; my $record_len = scalar @record; print "======= PERSON [$person_len] ===========\n"; print Dumper @person; print "========= RESULTS [$results_len] ===========\n"; print Dumper @results; print "============= RECORD [$record_len] =============\n"; print Dumper @record; print "**=========================**\n";