提問(wèn)者:bllz22382014-10-12 00:00
我解決NOI問(wèn)題需要用隨機(jī)貪知何實(shí)現(xiàn)請(qǐng)各位高手指點(diǎn)激盡
7.1 貪策略定義
7.2 貪策略特點(diǎn)
7.3 典型例題與習(xí)題
眾計(jì)算機(jī)解題策略貪策略算接近思維種解題策略基于貪策略各級(jí)各類信息競(jìng)賽、尤其NPC類問(wèn)題求解發(fā)揮著越越重要作用
7.1 貪策略定義
貪策略:指問(wèn)題初始狀態(tài)發(fā)通若干貪選擇優(yōu)值(或較優(yōu)解)種解題
其實(shí)貪策略詞我便看貪策略總做前看優(yōu)選擇說(shuō)貪策略并整體加考慮所做選擇某種意義局部?jī)?yōu)解許問(wèn)題自身特性決定該題運(yùn)用貪策略優(yōu)解或較優(yōu)解
例1:n行m列整數(shù)矩陣要求每行選數(shù)使選n數(shù)
本題用貪策略:選n每選相應(yīng)行值即
例2:N×M格陣每格賦予數(shù)(即權(quán))規(guī)定每移能向或向右現(xiàn)試找條路徑使其左角至右角所經(jīng)權(quán)
本題用貪策略能優(yōu)解我2×4矩陣?yán)?3 4 6
1 2 10
若按貪策略求解所路徑:1,3,4,6;
若按態(tài)規(guī)劃求解所路徑:1,2,10,6
例3:設(shè)定n臺(tái)處理機(jī)p1p2......pn,m作業(yè)j1,j2,...jm,處理機(jī)并行工作,作業(yè)未完能斷作業(yè)ji處理機(jī)處理間ti,求解佳案,使完m項(xiàng)工作間短?
本題能用貪算求解:理由若n=3,m=6 各作業(yè)間別11 7 5 5 4 7
用貪策略解(每作業(yè)加先空閑機(jī)器)time=15,用搜索策略優(yōu)間應(yīng)14,貪策略給我提供線索每臺(tái)處理間超15,給搜索提供便
總:
1. 能保證求解佳;
2. 能用求某些或解問(wèn)題;
3. 能確定某些問(wèn)題行解范圍特別給搜索算提供依據(jù)
7. 2 貪策略特點(diǎn)
貪算特點(diǎn)呢我認(rèn)適用于貪算解決問(wèn)題應(yīng)具2特點(diǎn):
1、貪選擇性質(zhì):
所謂貪選擇性質(zhì)指應(yīng)用同規(guī)則f原問(wèn)題變相似、規(guī)模更問(wèn)題、每步都前看似佳選擇種選擇依賴于已做選擇依賴于未做選擇全局看運(yùn)用貪策略解決問(wèn)題程序運(yùn)行程溯程關(guān)于貪選擇性質(zhì)讀者文給貪策略狀態(tài)空間圖深刻體
2、局部?jī)?yōu)解:
我通特點(diǎn)2向家介紹貪策略數(shù)描述由于運(yùn)用貪策略解題每都取優(yōu)解能夠保證局部?jī)?yōu)解定貪算家所熟悉態(tài)規(guī)劃算滿足局部?jī)?yōu)解貪策略比態(tài)規(guī)劃間效率更高站用內(nèi)存更少編寫(xiě)程序更簡(jiǎn)單
7.3 典型例題與習(xí)題
例4:背包問(wèn)題:
背包背包容量M=1507物品物品割任意
要求盡能讓裝入背包物品總價(jià)值能超總?cè)萘?物品
A
B
C
D
E
F
G
重量
35
30
60
50
40
10
25
價(jià)值
10
40
30
50
35
40
30
析:
目標(biāo)函數(shù): ∑pi
約束條件裝入物品總重量超背包容量:∑wi<=M( M=150)
(1)根據(jù)貪策略每挑選價(jià)值物品裝入背包結(jié)否優(yōu)
(2)每挑選所占空間物品裝入否能優(yōu)解
(3)每選取單位容量?jī)r(jià)值物品解本題策略
程序:
program beibao;
const
m=150;
n=7;
var
xu:integer;
i,j:integer;
goods:array[1..n,0..2] of integer;
ok:array[1..n,1..2] of real;
procedure init;
var
i:integer;
begin
xu:=m;
for i:=1 to n do
begin
write('Enter the price and weight of the ',i,'th goods:');
goods[i,0]:=i;
read(goods[i,1],goods[i,2]);
readln;
ok[i,1]:=0; ok[i,2]:=0;
end;
end;
procedure make;
var
bi:array[1..n] of real;
i,j:integer;
temp1,temp2,temp0:integer;
begin
for i:=1 to n do
bi[i]:=goods[i,1]/goods[i,2];
for i:=1 to n-1 do
for j:=i+1 to n do
begin
if bi[i] 回答者:mxozeu2016-10-12 00:00
第一次加滿油 然后在能到達(dá)的最遠(yuǎn)的加油站再加滿油 如此反復(fù), 最后到達(dá)目的地 如果中間某次加油后不能到達(dá)下面任何一個(gè)加油站 那么就無(wú)解
提問(wèn)者:doory771612014-01-06
1.一般車子一箱油可以跑600-900公里。 2.600-900公里后,油價(jià)有可能不一樣了。便宜 貴了都有可能。
提問(wèn)者:2014-01-07
假設(shè)第一次A取走了第一個(gè) 那么第二次B可以在第二個(gè)和最后一個(gè)里面選擇一個(gè) 假如B選擇的是第二個(gè) 那么A只需選走最后一個(gè) 就可以保證讓B每次只可以選擇奇數(shù)個(gè) B選擇的是最后一個(gè)A就選走第二個(gè) 總之假如A第一次選擇的是奇數(shù)位
提問(wèn)者:renshang2013-04-09
時(shí)間主要是 排序用時(shí)了,快速排序 一般是 o(n*logn) 空間 復(fù)雜度基本上是 0(1)
提問(wèn)者:bee05132014-02-05
同學(xué)啊,明天就要交了,如果真的不知道怎么寫(xiě),我給你個(gè)及格分吧。不用來(lái)這里求助的啦
提問(wèn)者:lqiiaun02013-12-30
#include
提問(wèn)者:xoji899grb2013-10-29