在乙個圖g
gg中。點有給定點權v
iv_i
vi與需求點權y
iy_i
yi。若存在邊i→j
i\to j
i→j,那麼有yi≤
yj
y_i \leq y_j
yi≤yj
。要求最小化∑iw
i∣yi
−vi∣
p\sum_i w_i|y_i - v_i|^p
∑iwi
∣yi
−vi
∣p。通常的根據p的不同,問題稱為l
pl_p
lp。
這個在oier中是十分常見的,譬如 bzoj1367。
下面講一下這類問題的通解。
前提條件:w
iw_i
wi的離散導數為常函式。(這裡可能有問題,但是常函式,分段但是每一段都是常函式這樣的函式是可以的)
首先,由於p=1
p=1p=
1,那麼y
yy的值一定是某個v
vv值。那麼假設v從小到大排序後為v1,
v2..
.v
xv_1,v_2...v_x
v1,v2
...
vx,那麼我們可以通過乙個整體二分求出每乙個點的值。
那麼首先,我們要先回求特殊情況的解法:
x =2
x=2x=
2。這個時候,相當於每個點變成了選擇0
00或者1
11,如果某乙個點選擇了1
11,那麼他的後繼也都要選擇1
11,那麼選擇1
11的就是乙個閉合子圖,那麼問題就變成了最小權閉合子圖,轉化一下變成最大權閉合子圖,然後可以網路流做。
那麼有了這個,我們用乙個整體二分即可。
s ol
ve(s
,l,r
)solve(s , l , r)
solve(
s,l,
r)表示點集s的最優解的取值範圍為vl,
vl+1
,...
vr
v_l,v_,...v_r
vl,vl
+1,
...v
r。如果l=r
l=rl=
r,那麼s
ss中的點就確定了。。否則設mid
=l+r
2mid = \frac
mid=2l
+r(下取整),那麼只對s
ss中的點,並且假設s
ss中的點只能取vmi
d與vm
id+1
v_與v_
vmid與
vmid
+1做一次原問題。然後對於這次最優解在vmi
dv_
vmid
處取到的點,他的取值範圍就變成了[l,
mid]
[l,mid]
[l,mid
],反之為[mi
d+1,
r]
[mid+1,r]
[mid+1
,r]。
當然,大部分情況下做x=2
x=2x=
2的問題的時候都有特殊做法。譬如之前說的apio的題,可以直接將n
2n^2
n2暴力拿來跑,然後第二維大小只有2
22,所以複雜度是對的。實際上這也就意味著大部分情況下你只要會暴力你就a
aa了這道題了。再也不用分析,寫可並堆了!
wxh:下次遇到這種題就可以直接噴出題人傻*,出裸題了!首先最優解可能不是v
vv中的某乙個,然後我就不會了。
保序回歸問題
目錄特殊情形下的演算法 設 r 是集合 s 上的乙個二元關係,若 r 滿足 則稱 r 為 s 上的非嚴格偏序關係,記做 le 給定正整數 p 一張點集為 v 邊集 e e m 的有向無環圖 g 及代價函式 y,w forall i,w i 0 如果在 g 中有 v i 到 v j 的有向路徑,那麼就...
筆記 保序回歸問題
保序指保持原來的偏序,在保持給定偏序前提下求一組變數 最擬合給定變數 用數學術語表示,給定偏序集合 s 大小為 n 的集合 x w 求一組大小為 n 變數集合 y 使得對於任意 i,j in s,y le y j 使得 sum limits w i x i y i p 最小。更具體的,我們稱之為 l...
Spark mllib 保序回歸
從該序列的首元素往後觀察,一旦出現亂序現象停止該輪觀察,從該亂序元素開始逐個吸收元素組成乙個序列,直到該序列所有元素的平均值小於或等於下乙個待吸收的元素。舉例 原始序列 9,10,14 結果序列 9,10,14 分析 從9往後觀察,到最後的元素14都未發現亂序情況,不用處理。原始序列 9,14,10...