「司空見慣的事物,也未必如它表面般簡單。」
我們假設一個場景,有一個校園緊急服務中心,可以接聽全校打進來的緊急
求助電話。該緊急服務中心配有若干個接線員,以應對同時打進來的電話。有一台電話轉接器能夠實現以下功能:對打進來的電話進行一次查詢,如果查詢到有空閑的接線員,則將這通電話轉接給某個空閑接線員,否則會返回一個信號,告訴打進來的電話暫時忙線。這些電話只能由固定在校園裡的一些校方提供的設備撥出,這意味著手機不能直接聯繫校園緊急服務中心,同時也意味著校方可以輕易對撥打設備進行改造。
一般情況下,多個接線員足夠處理多通電話,但某些高壓時刻,比如食堂食品安全事故導致大規模腸胃疾病爆發,同時打進緊急服務中心的電話就有可能多於接線員的數量。我們假設電話路線數量足夠多,在面對大量學生同時撥打時也不至於物理上崩潰。現在我們認為直接告訴撥打者,現在電話打不通是不負責的行為,並希望改進功能,讓撥打者不需要掛掉電話,而只需要拿著電話等,直到有空閑的接線員,則自動接通。
如果沒有限制的話,解決的辦法就非常多了。因此,下面我們要面對兩種不同的額外情況,請
思考其中對策。為了方便本題以單選題形式給出,請回答兩個答案的序號的差的絕對值。舉個例子:你認為答案是1和2,則選擇|1-2|=|-1|=1。兩個答案不排除序號相同。
情況一:
空間存儲告急!我們不能使用額外存儲除了現有的可能產生的數據之外的任何數據。
情況二:撥打設備維護者跑路!現在無法對撥打設備進行改造。所幸,接收電話的設備維護者還在。
答案1:在撥打設備處增加功能:如果接收到忙線信號,則在一秒后重新嘗試撥打電話。
答案2:在接受設備處增加一個記錄裝置,記下打不進來的電話,當某個接線員結束當前通話時,從記錄裝置中接通最早打進來的電話給這個接線員。
答案3:在撥打設備處增加功能:可以和所有撥打設備通信併發送詢問數據,以及面對詢問返回自己是否正在通話。如果詢問發現正在通話的撥打設備小於接線員數量(假設接線員數量隨時公開)則撥打電話,否則等待一秒后重複操作。
答案4:在接受設備處加以改進,當忙線時有新的電話打進,則直接掛斷最早打進來的電話,並將新打入的電話接給對應的接線員。