最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2021年04月01日 16:46:48   作者:zjlwdqca  
這篇文章主要介紹了Python實現(xiàn)貪心算法的示例,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下

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

一、貪心算法簡介

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

二、解決思路

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

可以先讓前N個人付款 后邊顧客不斷找出付款時間最短的依次排到前N個顧客按時間最長到最短的后邊

2.問題分解

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

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

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

def greedy(customer_list, n):
 # customer_time_list為第j個隊列上的某一個顧客的等待時間
 # sum_customer_time_list是求和數(shù)組
 # sum_customer_time_list[j]的值為第j個隊列上所有顧客的等待時間
 # min_sum_customer_time為結(jié)賬最小時間
 # 初始化一個大小為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到了最后一個結(jié)賬出口,重新歸零
  if j == n:
   j = 0
 # 匯總最小總時間
 k = 0
 while k < n:
  min_sum_customer_time += sum_customer_time_list[k]
  k += 1
 return min_sum_customer_time

四、算法測試結(jié)果

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

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

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

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

以上就是Python實現(xiàn)貪心算法的示例的詳細內(nèi)容,更多關(guān)于Python實現(xiàn)貪心算法的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python實現(xiàn)的多線程http壓力測試代碼

    Python實現(xiàn)的多線程http壓力測試代碼

    這篇文章主要介紹了Python實現(xiàn)的多線程http壓力測試代碼,結(jié)合實例形式分析了Python多線程操作的相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2017-02-02
  • python腳本替換指定行實現(xiàn)步驟

    python腳本替換指定行實現(xiàn)步驟

    這篇文章主要介紹了 python腳本替換指定行實現(xiàn)步驟的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • Python給圖像添加噪聲具體操作

    Python給圖像添加噪聲具體操作

    在本文里我們給大家整理了關(guān)于Python如何給圖像添加噪聲的相關(guān)知識點以及操作步驟,需要的朋友們學(xué)習(xí)下。
    2019-03-03
  • keras 獲取某層輸出 獲取復(fù)用層的多次輸出實例

    keras 獲取某層輸出 獲取復(fù)用層的多次輸出實例

    這篇文章主要介紹了keras 獲取某層輸出 獲取復(fù)用層的多次輸出實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • python常見讀取語音的3種方法速度對比

    python常見讀取語音的3種方法速度對比

    python已經(jīng)支持WAV格式的書寫,下面這篇文章主要給大家介紹了關(guān)于python常見讀取語音的3種方法速度對比的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-12-12
  • django連接mysql配置方法總結(jié)(推薦)

    django連接mysql配置方法總結(jié)(推薦)

    這篇文章主要介紹了django連接mysql配置方法總結(jié)(推薦),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • Python摸魚神器之利用樹莓派opencv人臉識別自動控制電腦顯示桌面

    Python摸魚神器之利用樹莓派opencv人臉識別自動控制電腦顯示桌面

    這篇文章主要介紹了Python摸魚神器樹莓派opencv人臉識別自動控制電腦顯示桌面,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • vscode搭建python Django網(wǎng)站開發(fā)環(huán)境的示例

    vscode搭建python Django網(wǎng)站開發(fā)環(huán)境的示例

    本文主要介紹了vscode搭建python Django網(wǎng)站開發(fā)環(huán)境的示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Python接口自動化之淺析requests模塊post請求

    Python接口自動化之淺析requests模塊post請求

    這篇文章Python接口自動化之淺析requests模塊post請求,以下主要介紹requests模塊中的post請求的使用,post源碼,data、json參數(shù)應(yīng)用場景及實戰(zhàn)
    2021-08-08
  • win10安裝python的全過程

    win10安裝python的全過程

    這篇文章主要介紹了win10安裝python的全過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09

最新評論

辉南县| 营山县| 灵石县| 北辰区| 汤阴县| 镇远县| 蒲城县| 衡阳市| 日照市| 赣榆县| 舞阳县| 壶关县| 千阳县| 安吉县| 乃东县| 腾冲县| 永康市| 伊宁县| 新郑市| 东安县| 格尔木市| 增城市| 武安市| 桑植县| 阜城县| 宾阳县| 吉木乃县| 岐山县| 绥滨县| 永胜县| 大名县| 广昌县| 康定县| 柳林县| 乳山市| 宾川县| 砀山县| 西峡县| 正安县| 荃湾区| 手游|