流式處理中的最小值問題

2021-10-08 13:43:57 字數 1038 閱讀 8871

2018/09/26

原來看流式處理的模型的時候,就看見過這部分的內容。一般來說,如果是為了尋求乙個最小值(不管是多少個資料,或者多少時間段內的資料)這個東西就是乙個變數的問題嘛。

下面這裡涉及的比較複雜,先對問題進行一下描述:

在流式資料處理的模式下,key為字串,value為整數,並且具有方向,以正負號作為標識。他們同樣都匯聚到乙個陣列中。總體上儲存的數量不多,所以這些資料都駐留在記憶體中。現在要做的處理是,每來乙個資料,如果這個數值是正的,而且它是當前情況下,最小的乙個數,那麼前面的積累的所有正數,都要減去這個最新的最小值。反正,如果是負數,那麼就要看負方向的數值。注意,情況下,兩個方向的最小值是成對出現的。

那麼這種情況下,如果去判定這個關係,特別是如果來了乙個數他是最小的,那麼如何滿足前面已經為0的需求。(因為有這個方向的要求。

這個流式處理的過程,具備一些限制,這個限制,需要一批訓練資料得出。

這個問題的描述還是需要進一步精簡才好,感覺還是沒有說的很清楚。

其實這個問題,很像那種批處理和流式處理的區別,他那個裡面說的很對,就是,如果我現在不處理那這個流占用的資源就太多了,特別是在大資料量的環境下,如果快速的進行決策,這是很關鍵的乙個問題。

那這個演算法應該怎麼去描述,

1、從二個,或者說第二對資料來的時候,再去執行相應的模式。(配合原來的特點,就是這個數值一般是成對出現的。)而且,如果第二個資料還比第乙個大,那麼就不用去執行這個相減的操作。一直等到這個相應的小的數值出現。

2、當出現了第乙個比較小的數值之後,就去用這個數來減這些個數值。利用另外乙個陣列,做為符號的標誌位。(如果後續可以將這部分資訊存貯到這個陣列裡面,盡可能來實現)。

這裡描述的還是不夠準確,就是因為處理的過程需要的是一對資料。所以這個流式處理資料的過程,針對這個資料到來的方式,還是需要有一些相應的策略。這一塊,有點像這個流式處理框架中的,資料清洗階段。

雖然這個問題的背景是從一些其他的問題中發掘出來的。但是我覺得,仍然可以抽象出來很多東西。

反過來說,事先進行資料探勘的,這是這個過程。我得先把這部分的內容進行一系列的統計。

最大值最小值問題

看了不是很懂,先把別人的 放著,日後在研究。程式8 3 5.cpp 定義控制台應用程式的入口點。include stdafx.h 目標學會用猜數字 二分 的方法,換個角度來解決問題 include include includeconst int maxn 100000 int a maxn n,m...

棧找最小值問題

question 實現乙個特殊的棧,在實現棧的基本功能的基礎上,在實現回棧中最小元素的操作 thinking sketch 定義倆個棧。同時壓入同時彈出,比如說乙個data,乙個min,當data棧新壓入的數大於min的棧頂,重複壓入min棧頂數 detailed 分別定義data,min倆個棧,p...

範圍最小值問題(RMQ)

給出乙個n個元素的陣列 tarjan的sparse table演算法 include includeusing namespace std const int maxn 10005 int a maxn d maxn 20 d i j 為以a i 為起點,長度為2 j的一段元素中的最小值 遞推公式d...