久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術(shù)文章
文章詳情頁

Python實(shí)現(xiàn)貪心算法的示例

瀏覽:87日期:2022-06-23 15:17:01

今天一個(gè)研究生同學(xué)問我一個(gè)問題,問題如下:超市有m個(gè)顧客要結(jié)賬,每個(gè)顧客結(jié)賬的時(shí)間為Ti( i取值從1到m)。超市有n個(gè)結(jié)賬出口,請(qǐng)問全部顧客怎么選擇出口,可以最早完成全部顧客的結(jié)賬,并用代碼實(shí)現(xiàn)。其實(shí)利用的就是貪心算法來解決這個(gè)問題,那么,什么是貪心算法?怎么用貪心算法解決這個(gè)問題?讓我一一道來。

一、貪心算法簡(jiǎn)介

貪心算法是一種對(duì)某些求最優(yōu)解問題的更簡(jiǎn)單、更迅速的設(shè)計(jì)技術(shù)。貪心算法的特點(diǎn)是一步一步地進(jìn)行,常以當(dāng)前情況為基礎(chǔ)根據(jù)某個(gè)優(yōu)化測(cè)度作最優(yōu)選擇,而不考慮各種可能的整體情況,省去了為找最優(yōu)解要窮盡所有可能而必須耗費(fèi)的大量時(shí)間。貪心算法采用自頂向下,以迭代的方法做出相繼的貪心選擇,每做一次貪心選擇,就將所求問題簡(jiǎn)化為一個(gè)規(guī)模更小的子問題,通過每一步貪心選擇,可得到問題的一個(gè)最優(yōu)解。雖然每一步上都要保證能獲得局部最優(yōu)解,但由此產(chǎn)生的全局解有時(shí)不一定是最優(yōu)的,所以貪心算法不要回溯 。

二、解決思路1.同學(xué)導(dǎo)師給的思路

可以先讓前N個(gè)人付款 后邊顧客不斷找出付款時(shí)間最短的依次排到前N個(gè)顧客按時(shí)間最長(zhǎng)到最短的后邊

2.問題分解

可以先假設(shè)只有一個(gè)收銀臺(tái),那么我們可以很快的反應(yīng)過來,最優(yōu)的順序就是按時(shí)間由小到大依次進(jìn)行。即最優(yōu)解為A={t(1),t(2),….t(n)}(其中t(i)為第i個(gè)用戶需要的服務(wù)時(shí)間),則每個(gè)用戶等待時(shí)間為:T(1)=t(1);T(2)=t(1)+t(2);…T(n):t(1)+t(2)+t(3)+……t(n);那么總等待時(shí)問,即最優(yōu)值為:TA=n*t(1)+(n-1)*t(2)+…+(n+1-j)t(i)+…2t(n-1)+t(n);

三、算法代碼實(shí)現(xiàn)

有了上邊的分解,那么實(shí)現(xiàn)算法代碼就非常的輕而易舉了`

def greedy(customer_list, n): # customer_time_list為第j個(gè)隊(duì)列上的某一個(gè)顧客的等待時(shí)間 # sum_customer_time_list是求和數(shù)組 # sum_customer_time_list[j]的值為第j個(gè)隊(duì)列上所有顧客的等待時(shí)間 # min_sum_customer_time為結(jié)賬最小時(shí)間 # 初始化一個(gè)大小為n的0列表 customer_time_list = [] sum_customer_time_list = [] num = 0 while num < n: customer_time_list.append(0) sum_customer_time_list.append(0) num += 1 min_sum_customer_time = 0 # 顧客的數(shù)量 m = len(customer_list) customer_list.sort() #列表升序排序 i = 0 j = 0 while i < m: customer_time_list[j] += customer_list[i] sum_customer_time_list[j] += customer_time_list[j] i += 1 j += 1 # 如果j到了最后一個(gè)結(jié)賬出口,重新歸零 if j == n: j = 0 # 匯總最小總時(shí)間 k = 0 while k < n: min_sum_customer_time += sum_customer_time_list[k] k += 1 return min_sum_customer_time四、算法測(cè)試結(jié)果

準(zhǔn)備一個(gè)顧客排隊(duì)序列和指定收銀臺(tái)數(shù)量,得到最小時(shí)間

customer_list = [6, 5, 3, 4, 2, 1]print(greedy(customer_list, 2))

Python實(shí)現(xiàn)貪心算法的示例

五、算法復(fù)雜性分析

程序主要是花費(fèi)在對(duì)各顧客所需服務(wù)時(shí)間的排序和貪心算法,即計(jì)算平均服務(wù)時(shí)間上面。其中,貪心算法部分只有一重循環(huán)影響時(shí)間復(fù)雜度,其時(shí)間復(fù)雜度為O(n):而排序算法的時(shí)間復(fù)雜度為O(nlogn)。因此,綜合來看算法的時(shí)間復(fù)雜度為O(nlogn)。

以上就是Python實(shí)現(xiàn)貪心算法的示例的詳細(xì)內(nèi)容,更多關(guān)于Python實(shí)現(xiàn)貪心算法的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 精品国产一区二区三区四 | 超碰人人99 | 在线视频91 | 国产精品久久久久久久久久久久冷 | 国产精品一区一区三区 | 国产精品无码永久免费888 | av毛片在线免费看 | 理论片91| 中文字幕免费在线 | 北条麻妃99精品青青久久主播 | 男女视频在线观看 | 中文字幕亚洲一区二区三区 | 久久久久久久一区 | 99成人 | 日本免费一区二区在线观看 | 九九精品视频在线 | 国产一区二区三区在线看 | 麻豆国产免费 | 成人高清视频在线观看 | 亚洲精品国产综合区久久久久久久 | 精品在线视频一区 | 国产成人精品免高潮在线观看 | 中文字幕欧美在线 | 欧美xxxx片 | 777777777亚洲妇女| 欧美精品一区二区三区在线播放 | 四虎永久免费在线 | 色综合激情 | 久久一区国产 | 精品午夜久久久 | 成人福利影院 | 国产亚洲精品精品国产亚洲综合 | 中文字幕成人在线 | 国产精品美女久久久久久久久久久 | 国产精产国品一二三产区视频 | 特黄视频| 亚洲欧美另类久久久精品2019 | 91精品国产综合久久久久久漫画 | av国产精品| 欧美永久精品 | 成人在线视频免费观看 |