时间复杂度划分

时间:2018-04-16 06:44:17

标签: c time-complexity big-o

嗨,我只是想检查一下。

假设f(n) = O(g(n))那么f(n)/g(n) = O(1)? 如果f(n) = theta(g(n))则为f(n)/g(n) = theta(1)

这两个陈述都是真的吗?如果不能,我可以得到一些解释吗?

1 个答案:

答案 0 :(得分:0)

更正,你是对的。直觉f(n)=O(g(n))意味着f的增长速度最快与g一样快,因此f(n)/g(n)最多是"最常数"。下面我给出你的索赔的正式证明。

更正式地说,f=O(g)表示对于所有足够大的n,我们f(n) <= C*g(n)代表某些C>0。因此,对于所有足够大的n,我们都有f(n)/g(n) <= C*g(n)/g(n) <= C。这意味着f/g=O(1)

对于第二个问题,f=Theta(g)然后D*g(n) <= f(n) <= C*g(n)是否足够nC,D>0。因此,一方面,f(n)/g(n) >= D*g(n)/g(n) >= D;另一方面,f(n)/g(n) <= C*g(n)/g(n) <= C;将这两者组合在一起,我们得到的就是n所有D <= f(n)/g(n) <= C,当你陈述时,f/g=Theta(1)暗示public function uploadSong( $ref_id ) { $status = $url = ""; $data['user_info'] = $this->data; if ($status != "error") { $config['upload_path'] = './assets/songs/'; $url = 'assets/songs/'; } $config['allowed_types'] = 'mp3'; $config['max_size'] = 99999; //$config['encrypt_name'] = TRUE; //chmod('assets/', 0777); $this->load->library('upload', $config); if (!$this->upload->do_upload('file_name')) { $status = 'error'; $msg = $this->upload->display_errors('', ''); echo $msg; } else { // Go ahead } }