【遞歸題】正確的打開方式,面試官聽了都說精闢

前言

遞歸,是一個非常重要的概念,也是面試中非常喜歡考的。因為它不但能考察一個程序員的算法功底,還能很好的考察對時間空間複雜度的理解和分析。

本文只講一題,也是幾乎所有算法書講遞歸的第一題,但力爭講出花來,在這裏分享四點不一樣的角度,讓你有不同的收穫。

  • 時空複雜度的詳細分析
  • 識別並簡化遞歸過程中的重複運算
  • 披上羊皮的狼
  • 適當炫技助我拿到第一份工作

算法思路

大家都知道,一個方法自己調用自己就是遞歸,沒錯,但這隻是理解遞歸的最表層的理解。

那麼遞歸的實質是什麼?

答:遞歸的實質是能夠把一個大問題分解成比它小點的問題,然後我們拿到了小問題的解,就可以用小問題的解去構造大問題的解。

那小問題的解是如何得到的?

答:用再小一號的問題的解構造出來的,小到不能再小的時候就是到了零號問題的時候,也就是 base case 了。

那麼總結一下遞歸的三個步驟:

Base case:就是遞歸的零號問題,也是遞歸的終點,走到最小的那個問題,能夠直接給出結果,不必再往下走了,否則,就會成死循環;

拆解:每一層的問題都要比上一層的小,不斷縮小問題的 size,才能從大到小到 base case;

組合:得到了小問題的解,還要知道如何才能構造出大問題的解。

所以每道遞歸題,我們按照這三個步驟來分析,把這三個問題搞清楚,代碼就很容易寫了。

斐波那契數列

這題雖是老生常談了,但相信我這裏分享的一定會讓你有其他收穫。

題目描述

斐波那契數列是一位意大利的數學家,他閑着沒事去研究兔子繁殖的過程,研究着就發現,可以寫成這麼一個序列:1,1,2,3,5,8,13,21…也就是每個數等於它前兩個數之和。那麼給你第 n 個數,問 F(n) 是多少。

解析

用數學公式表示很簡單:

f(n) = f(n-1) + f(n-2)

代碼也很簡單,用我們剛總結的三步:

  • base case: f(0) = 0, f(1) = 1.
  • 分解:f(n-1), f(n-2)
  • 組合:f(n) = f(n-1) + f(n-2)

那麼寫出來就是:

class Solution {
    public int fib(int N) {
        if (N == 0) {
            return 0;
        } else if (N == 1) {
            return 1;
        }
        return fib(N-1) + fib(N-2);
    }
}

但是這種解法 Leetcode 給出的速度經驗只比 15% 的答案快,因為,它的時間複雜度實在是太高了!

過程分析

那這就是我想分享的第一點,如何去分析遞歸的過程。

首先我們把這顆 Recursion Tree 畫出來,比如我們把 F(5) 的遞歸樹畫出來:

那實際的執行路線是怎樣的?

首先是沿着最左邊這條線一路到底:F(5) → F(4) → F(3) → F(2) → F(1),好了終於有個 base case 可以返回 F(1) = 1 了,然後返回到 F(2) 這一層,再往下走,就是 F(0),又觸底反彈,回到 F(2),得到 F(2) = 1+0 =1 的結果,把這個結果返回給 F(3),然後再到 F(1),拿到結果后再返回 F(3) 得到 F(3) = 左 + 右 = 2,再把這個結果返上去…

這種方式本質上是由我們計算機的馮諾伊曼體系造就的,目前一個 CPU 一個核在某一時間只能執行一條指令,所以不能 F(3) 和 F(4) 一起進行了,一定是先執行了 F(4) (本代碼把 fib(N-1) 放在前面),再去執行 F(3).

我們在 IDE 里 debug 就可以看到棧裏面的情況:這裏確實是先走的最左邊這條線路,一共有 5 層,然後再一層層往上返回。

時間複雜度分析

如何評價一個算法的好壞?

很多問題都有多種解法,畢竟條條大路通羅馬。但如何評價每種方法的優劣,我們一般是用大 O 表達式來衡量時間和空間複雜度。

時間複雜度:隨着自變量的增長,所需時間的增長情況。

這裏大 O 表示的是一個算法在 worst case 的表現情況,這就是我們最關心的,不然春運搶車票的時候系統 hold 不住了,你跟我說這個算法很優秀?

當然還有其他衡量時間和空間的方式,比如

Theta: 描述的是 tight bound Omega(n):
這個描述的是 best case,最好的情況,沒啥意義

這也給我們了些許啟發,不要說你平時表現有多好,沒有意義;面試衡量的是你在 worst case 的水平;不要說面試沒有發揮出你的真實水平,扎心的是那就是我們的真實水平。

那對於這個題來說,時間複雜度是多少呢?

答:因為我們每個節點都走了一遍,所以是把所有節點的時間加起來就是總的時間。

在這裏,我們在每個節點上做的事情就是相加求和,是 O(1) 的操作,且每個節點的時間都是一樣的,所以:

總時間 = 節點個數 * 每個節點的時間

那就變成了求節點個數的數學題:

在 N = 5 時,

最上面一層有1個節點,
第二層 2 個,
第三層 4 個,
第四層 8 個,
第五層 16 個,如果填滿的話,想象成一顆很大的樹:)

這裏就不要在意這個沒填滿的地方了,肯定是會有差這麼幾個 node,但是大 O 表達的時間複雜度我們剛說過了,求的是 worst case.

那麼總的節點數就是:
1 + 2 + 4 + 8 + 16

這就是一個等比數列求和了,當然你可以用數學公式來算,但還有個小技巧可以幫助你快速計算:

其實前面每一層的節點相加起來的個數都不會超過最後一層的節點的個數,總的節點數最多也就是最後一層節點數 * 2,然後在大 O 的時間複雜度裏面常數項也是無所謂的,所以這個總的時間複雜度就是:

最後一層節點的個數:2^n

空間複雜度分析

一般書上寫的空間複雜度是指:

算法運行期間所需佔用的所有內存空間

但是在公司里大家常用的,也是面試時問的指的是
Auxiliary space complexity:

運行算法時所需佔用的額外空間。

舉例說明區別:比如結果讓你輸出一個長度為 n 的數組,那麼這 O(n) 的空間是不算在算法的空間複雜度里的,因為這個空間是跑不掉的,不是取決於你的算法的。

那空間複雜度怎麼分析呢?

我們剛剛說到了馮諾伊曼體系,從圖中也很容易看出來,是最左邊這條路線佔用 stack 的空間最多,一直不斷的壓棧,也就是從 5 到 4 到 3 到 2 一直壓到 1,才到 base case 返回,每個節點佔用的空間複雜度是 O(1),所以加起來總的空間複雜度就是 O(n).

優化算法

那我們就想了,為什麼這麼一個簡簡單單的運算竟然要指數級的時間複雜度?到底是為什麼讓時間如此之大。

那也不難看出來,在這棵 Recursion Tree 里,有太多的重複計算了。

比如一個 F(2) 在這裏都被計算了 3 次,F(3) 被計算了 2 次,每次還都要再重新算,這不就是狗熊掰棒子嗎,真的是一把辛酸淚。

那找到了原因之後,為了解決這種重複計算,計算機採用的方法其實和我們人類是一樣的:記筆記。

對很多職業來說,比如醫生、律師、以及我們工程師,為什麼越老經驗值錢?因為我們見得多積累的多,下次再遇到類似的問題時,能夠很快的給出解決方案,哪怕一時解決不了,也避免了一些盲目的試錯,我們會站在過去的高度不斷進步,而不是每次都從零開始。

回到優化算法上來,那計算機如何記筆記呢?

我們要想求 F(n),無非也就是要
記錄 F(0) ~ F(n-1) 的值,
那選取一個合適的數據結構來存儲就好了。

那這裏很明顯了,用一個數組來存:

Index 0 1 2 3 4 5
F(n) 0 1 1 2 3 5

那有了這個 cheat sheet,我們就可以從前到后得到結果了,這樣每一個點就只算了一遍,用一個 for loop 就可以寫出來,代碼也非常簡單。

class Solution {
    public int fib(int N) {
        if (N == 0) {
            return 0;
        }
        if (N== 1) {
            return 1;
        }
        int[] notes = new int[N+1];
        notes[0] = 0;
        notes[1] = 1;
        for(int i = 2; i <= N; i++) {
            notes[i] = notes[i-1] + notes[i-2];
        }
        return notes[N];
    }
}

這個速度就是 100% 了~

但是我們可以看到,空間應該還有優化的餘地。

那仔細想想,其實我們記筆記的時候需要記錄這麼多嗎?需要從幼兒園到小學到初中到高中的筆記都留着嗎?

那其實每項的計算只取決於它前面的兩項,所以只用保留這兩個就好了。

那我們可以用一個長度為 2 的數組來計算,或者就用 2 個變量。

更新代碼:

class Solution {
    public int fib(int N) {
        int a = 0;
        int b = 1;
        if(N == 0) {
            return a;
        }
        if(N == 1) {
            return b;
        }
        for(int i = 2; i <= N; i++) {
            int tmp = a + b;
            a = b;
            b = tmp;
        }
        return b;
    }
}

這樣我們就把空間複雜度優化到了 O(1),時間複雜度和用數組記錄一樣都是 O(n).

這種方法其實就是動態規劃 Dynamic Programming,寫出來的代碼非常簡單。

那我們比較一下 Recursion 和 DP:

Recursion 是從大到小,層層分解,直到 base case 分解不了了再組合返回上去;
DP 是從小到大,記好筆記,不斷進步。
也就是 Recursion + Cache = DP

如何記錄這個筆記,如何高效的記筆記,這是 DP 的難點。

有人說 DP 是拿空間換時間,但我不這麼認為,這道題就是一個很好的例證。

在用遞歸解題時,我們可以看到,空間是 O(n) 在棧上的,但是用 DP 我們可以把空間優化到 O(1),DP 可以做到時間空間的雙重優化。

其實呢,斐波那契數列在現實生活中也有很多應用。

比如在我司以及很多大公司里,每個任務要給分值,1分表示大概需要花1天時間完成,然後分值只有>1,2,3,5,8這5種,(如果有大於8分的任務,就需要把它 break down 成8分以內的,以便大家在>兩周內能完成。)
因為任務是永遠做不完的而每個人的時間是有限的,所以每次小組會開會,挑出最重要的任務讓大家來>做,然後每個人根據自己的 available 的天數去 pick up 相應的任務。

那有同學可能會想,這題這麼簡單,這都 2020 年了,面試還會考么?

答:真的會

只是不能以這麼直白的方式給你了。

比如很有名的爬樓梯問題:

一個 N 階的樓梯,每次能走一層或者兩層,問一共有多少種走法。

這個題這麼想:

站在當前位置,只能是從前一層,或者前兩層上來的,所以 f(n) = f(n-1) + f(n-2).

這題是我當年面試時真實被問的,那時我還在寫 python,為了炫技,還用了lambda function:

f = lambda n: 1 if n in (1, 2) else f(n-1) + f(n-2)

遞歸的寫法時間複雜度太高,所以又寫了一個 for loop 的版本

def fib(n)
  a, b = 1, 1
  for i in range(n-1):
    a, b = b, a+b
  return a 

然後還寫了個 caching 的方法:

def cache(f):
    memo = {}
    def helper(x):
        if x not in memo:
            memo[x] = f(x)
        return memo[x]
    return helper
@cache
def fibR(n):
    if n==1 or n==2: return 1
    return fibR(n-1) + fibR(n-2)

還順便和面試官聊了下 tail recursion:

tail recursion 尾遞歸:就是遞歸的這句話是整個方法的最後一句話。

那這個有什麼特別之處呢?

尾遞歸的特點就是我們可以很容易的把它轉成 iterative 的寫法,當然有些智能的編譯器會自動幫我們做了(不是說顯性的轉化,而是在運行時按照 iterative 的方式去運行,實際消耗的空間是O(1))

那為什麼呢?

因為回來的時候不需要 backtrack,遞歸這裏就是最後一步了,不需要再往上一層返值。

def fib(n, a=0, b=1):
    if n==0: return a
      if n==1: return b
    return fib(n-1, b, a+b)

最終,拿出了我的殺手鐧:lambda and reduce

fibRe = lambda n: reduce(lambda x, n: [x[1], x[0]+x[1]], range(n), [0, 1])

看到面試官滿意的表情后,就開始繼續深入的聊了…

所以說,不要以為它簡單,同一道題可以用七八種方法來解,分析好每個方法的優缺點,引申到你可以引申的地方,展示自己紮實的基本功,這場面試其實就是你 show off 的機會,這樣才能騙過面試官啊~lol

這就是本文的所有內容了,不知道大家看完感受如何?留言告訴我你的感受吧~

點擊在看,鼓勵下我啊!

瞎寫評論,顯得我很紅啊!

轉發轉發轉發,愛她,就送給她!

還想跟我看更多數據結構和算法題的小夥伴們,記得關注我,我是程序零世界,算法就這麼回事。

作者:小齊本齊

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※別再煩惱如何寫文案,掌握八大原則!

※教你寫出一流的銷售文案?

※超省錢租車方案

FB行銷專家,教你從零開始的技巧

深入理解JVM(③)低延遲的Shenandoah收集器

前言

Shenandoah作為第一款不由Oracle(包括一起的Sun)公司的虛擬機團隊所領導開發的HotSpot垃圾收集器。是只存在於OpenJDK當中的,最初由RedHat公司創建的,在2014年的時候貢獻給了OpenJDK。

與G1相比的優點

從代碼的歷史淵源上來看,Shenandoah收集器更像是G1的下一代繼承者,兩者相似的堆內存布局,在初始標記、併發標記等許多階段的處理思路都高度一致。
但是Shenandoah相比G1還是至少有三個明顯的不同之處。
1、支持併發的整理算法,G1的回收階段是可以多線程并行的,但卻不鞥呢與用戶線程併發。
2、Shenandoah是默認不使用分代收集的,不會有專門的新生代Region或者老年代Region的存在。
3、Shenandoah摒棄了在G1中耗費大量內存和計算資源去維護的記憶集,改用名為“連接矩陣”(Connection Matrix)的全局數據結果來記錄誇Region的引用關係降低了誇代維護的消耗。
Shenandoah收集器的跨代“連接矩陣”示意圖

連接矩陣可以簡單的理解為一張二維表格,如果Region N有對象指向Region M,就在表格的N行M列中打上一個標記,如上圖所示,如果Region 5中的對象Object C引用了Region 3 的Object B,Object B又引用了Region 1 的Object A,那麼連接矩陣就中就會在5行3列、3行1列中打上標記。在回收時通過這張表格就可以得出哪些Region 之間產生了跨代引用。

收集過程

Shenandoah收集器的工作過程大致可以劃分為以下九個階段:

  • 初始標記:與G1一樣,首先標記與GC Roots直接關聯的對象,這個階段仍是“Stop The World”的,但停頓時間與堆大小無關,至於GC Roots的數量相關。
  • 併發標記:與G1一樣,編輯對象圖,標記出全部可達的對象,與用戶線程一起併發,時間長短與堆中存活對象的數量以及對象圖的結構複雜程度有關。
  • 最終標記:與G1一樣,處理剩餘的SATB掃描,並在這個階段統計出回收價值最高的Region,將這些Region構成一組回收集。此階段也會有一小段短暫的停頓。
  • 併發清理:這個階段用於清理那些整個區域內連一個存活對象都沒有找到的Region。
  • 併發回收:這個階段是Shenandoah與之前HotSpot中其他收集器的核心差異。在這個階段,Shenandoah要把回收集裏面的存活對象先複製一份到其他未被使用的Region中。但是有個難點是在移動對象的同時,用戶線程仍然可能不停的對被移動的對象進行讀寫訪問,移動對象之後整個內存中所有指向該對象的引用都還是舊對象的地址,這是很難一瞬間全部改變過來的。對於這個難點,Shenandoah將會通過讀屏障和被稱為“Brooks Pointers”的轉髮指針來解決
    併發回收階段運行時間的長短取決於回收集的大小。
  • 初始引用更新:併發回收階段複製對象結束后,還需要把堆中所有指向舊對象的引用修正蛋糕複製后的新地址,這個操作稱為引用更新。這個階段就是對這個操作進行初始化的,初始引用更新時間很短,會產生一個非常短暫的停頓。
  • 併發引用更新:真正開始進行引用更新操作,這個階段是與用戶線程一起併發的,時間長短取決於內存中涉及的引用數量的多少。
  • 最終引用更新:解決了堆中的引用更新后,還要修正存在於GC Roots 中的引用。這個階段是Shenandoah的最後一次停頓,時間長短與GC Roots的數量有關。
  • 併發清理:經過併發回收和引用更新之後,整個回收集中所有的Region已再無存活對象,最後再調用一次併發清理過程來回收這些Region 的內存空間,供以後新對象分配使用。

這九個階段的工作過程可能拆的比較瑣碎,只要抓住其中三個最重要的併發節點(併發標記、併發回收、併發引用更新)就好理解Shenandoah的運作過程了。

轉髮指針(Brooks Pointer)

Shenandoah收集器的併發回收的核心是,轉髮指針。
轉髮指針的核心內容就是,在原有對象布局結構的最前面統一增加一個新的引用字段,在正常不處於併發移動的情況下,該引用指向對象自己。
如下圖:

轉髮指針加入后帶來的收益自然是當對象擁有了一份新的副本時,只需要修改一處指針的值,即舊對象上轉髮指針的引用位置,使其指向新對象,便可將所有對該對象的訪問轉發到新的副本上。這樣只要對象的內存仍然存在,未被清理掉,虛擬機內存中所有通過舊引用地址訪問的代碼仍然可用,都會被自動轉發到新對象上繼續工作。
如下圖:

Brooks Pointers 轉髮指針在設計上決定了它是必然會出現多線程競爭問題的。Shenandoah收集器是通過比較交換(Compare And Swap,CAS)操作來保證併發時堆中的訪問正確性的。

總結

1、Shenandoah收集器保證了收集垃圾的低延遲。
2、但是使用了過多的寫屏障,所以導致Shenandoah收集器的弱項很明顯,當數據量大的時候會產生高運行負擔而使得吞吐量下降。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※超省錢租車方案

※別再煩惱如何寫文案,掌握八大原則!

※回頭車貨運收費標準

※教你寫出一流的銷售文案?

FB行銷專家,教你從零開始的技巧

有如吸菸者的尼古丁 新菸鹼類農藥讓蜜蜂出現成癮行為

環境資訊中心綜合外電;姜唯 編譯;林大利 審校

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※別再煩惱如何寫文案,掌握八大原則!

※教你寫出一流的銷售文案?

※超省錢租車方案

FB行銷專家,教你從零開始的技巧

聚甘新

德國建築節能怎麼練成的?法規&技術雙軌並進

環境資訊中心記者 陳文姿報導

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※超省錢租車方案

※別再煩惱如何寫文案,掌握八大原則!

※回頭車貨運收費標準

※教你寫出一流的銷售文案?

FB行銷專家,教你從零開始的技巧

聚甘新

新能源車夯,比亞迪前三季獲利有望跳增九成

中國電動汽車商比亞迪(BYD)周日公布,2016年前九個月盈餘最高有望年增逾九成(91%),主要受惠於中國政策大力推動節能汽車。

比亞迪有股神巴菲特光環加持,上個月又獲得三星入股,可謂左右逢源。據比亞迪表示,上半年獲利來到23億人民幣,較去年同期跳增384%,若連同本季獲利,今年前三季預估將成長83-91%。

比亞迪以製造電池起家,2003年併購秦川汽車後跨足汽車市場,並為日後進軍電動車鋪路。憑藉著電池技術領先同業,比亞迪在中國新能源車領域已先立於不敗之地,近年隨著環保法規轉嚴,比亞迪生產之油電混合車與全電動車業績更是蒸蒸日上。

三星七月下旬以約30億人民幣參與比亞迪新一輪募資,亦是著眼於中國新能源車的商機。不過在三星正式入股後,巴菲特掌舵的柏克夏海瑟威公司(Berkshire Hathaway)對比亞迪的持股比例,則從原先的9.1%稀釋至8.25%。

(本文內容由授權提供)

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※別再煩惱如何寫文案,掌握八大原則!

※教你寫出一流的銷售文案?

※超省錢租車方案

FB行銷專家,教你從零開始的技巧

聚甘新

Tesla台灣旗艦店開幕,Model S 2017年在台上市

不論是在汽車、能源還是科技界,不論發生什麼事情都在大眾目光焦點的特斯拉 (Tesla),既三月份成立臺灣分公司之後有更進一步的動作。特斯拉的臺北旗艦店在今日 (9 月1 日) 在臺北信義商圈開幕,有興趣的人可以到店體驗特斯拉房車Model S,並且預約試駕和進一步訂購,預計明年 (2017) 第一季交車。

特斯拉看中臺灣在科技產業的樞鈕地位,因此在亞太區暨中國、香港、澳門、澳洲之後,選擇臺灣,成為特斯拉全球第25 個設立的國家。而在信義商圈新光三越A11 的台灣旗艦店,則是第204 家店。選在臺灣的首善之都臺北,則是著眼信義商圈是臺北最繁盛的購物商圈,對新事物的接受度高,因此選在新光三越A11 設旗艦店,並且還跟新光三越合作,在百貨公司的地下停車場設立充電站。

電動車要能方便,必須有足夠的的充電站。Tesla香港、澳門及台灣地區區域總監范菁怡表示,目前除了設在車主自家的居家充電站之外,還會與百貨商場、飯店合作,在停車場設置目的地充電站。未來特斯拉也將在高速公路沿線設置超級充電站,服務需長距離駕駛的特斯拉車子。

由於特斯拉代表新一代的潔淨能源運用型式,對於提高都市運輸效率和降低污染有顯著效果,因此除了特斯拉的代表和合作的百貨公司代表以外,臺北市政府也由副市長林欽榮出席。另外還有負責招商相關事務的行政院全球招商及攬才聯合服務中心何怡明執行長,以及經濟部工業局黃裕峰副組長出席。林欽榮致詞時表示,臺北市仍然要繼續推動共享汽車,U-Car 計畫。

儘管目前在臺灣還只能預購特斯拉的Model S 房車車型,但是特斯拉計畫在臺引進平價車款Model 3,定價3 萬5,000 美元,預計明年引進,目前正在商品檢驗階段。

「電動車勢必是未來交通方式的主流,Tesla 一直期望扮演推動永續能源應用的角色。我們樂見台灣對環保、綠色能源的高接受度,也很高興Tesla 能成為這波改革中的一股力量。」Tesla 全球副總裁暨亞太區總裁任宇翔表示:「臺灣特殊的地理和城市發展環境,以及政府對於相關政策和補助的支持,讓Tesla 清楚看到電動車在臺灣的發展性。臺灣廠商不僅是Tesla供應鏈的合作夥伴,更在電動車的推廣上佔有重要地位。隨著Tesla 電動車在台上市與充電站的逐步擴充,Tesla 對臺灣市場的發展潛力深具信心,除了希望對合作夥伴和經濟發展帶來正面影響,更期望與臺灣一起開創電動車的新篇章。」

特斯拉之後將在臺灣設立客服,還有佈建充電網路,當特斯拉的Model S 在臺灣的道路奔馳時,超級充電站和目的地充電站在商圈、景點等地方,形成足夠的網狀分佈,維持特斯拉的輪胎不停轉動。全球有超過9,000 萬臺汽車,目前只有不到0.2% 的汽車是電動車,特斯拉推動電動車,還可以有很大的施力空間。

(首圖:設在新光三越信義A11 地下4 樓停車場的特斯拉目的地充電站,在2017 年特斯拉車子在臺灣道路奔馳之際,這類設在購物商場的充電站將會越來越多。來源:科技新報)

(本文授權轉載自《》──〈〉)

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※超省錢租車方案

※別再煩惱如何寫文案,掌握八大原則!

※回頭車貨運收費標準

※教你寫出一流的銷售文案?

FB行銷專家,教你從零開始的技巧

聚甘新

調查:紙業大廠「APP亞洲漿紙」和「APRIL」涉嫌毀林

環境資訊中心綜合外電;姜唯 編譯;林大利 審校

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※別再煩惱如何寫文案,掌握八大原則!

※教你寫出一流的銷售文案?

※超省錢租車方案

FB行銷專家,教你從零開始的技巧

聚甘新

非洲最大規模盜獵 87隻大象遭取牙慘死

摘錄自2018年9月4日聯合報報導

大象保育團體「大象無國界」(Elephants Without Borders)透過空拍發現,非洲博茨瓦納(Botswana)的野生動物保護區附近有87隻大象屍體,且都被割去象牙,該組織的博士賽斯(Mike Chase) 指出,這是他見過最大規模盜獵,情況令人震驚。

英國廣播公司(BBC)報導,進行野生動物調查的科學家說,兩周前有87隻大象遭屠殺獵取象牙,而近三個月內也有5頭白犀牛被獵殺。

近90隻大象慘遭無辜獵殺,博士塞斯表示,大象的屍體頭骨都遭盜砍斷,以讓盜獵者取得象牙。他補充,盜獵者用乾燥的灌木叢隱藏腐爛的大象屍體試圖掩蓋他們的罪行。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※超省錢租車方案

※別再煩惱如何寫文案,掌握八大原則!

※回頭車貨運收費標準

※教你寫出一流的銷售文案?

FB行銷專家,教你從零開始的技巧

聚甘新

台灣研究單位推出自動駕駛技術,盼推動在地產業鏈

對於台灣的電子廠來說,由於傳統 PC、行動裝置帶動的成長不在,而物聯網還未有突破性成長下,寄望於還未開拓的領域是相當正常的發展方向。財團法人車輛研究測試中心 (Automotive Research & Testing Center, ARTC) 為臺灣汽車品,除了實施新車要在台上市的認證工作以外,也著手研發自動駕駛車輛所需要的各項智慧系統,並技轉給臺灣廠商,期得未來建立完整的生態體系。

一般來說汽車產業以及相關媒體比較熟悉車輛中心,但時代在演進,近來隨著自動駕駛議題被不少科技廠投入心力研發,以智慧車型式出現的汽車消息常常出現在科技媒體上面。科技新報很榮幸獲邀前往車輛中心,來看看有那些可以運用到自動駕駛的技術,並實地體驗五大科研成果。

軟體產業先推出 beta 版本軟體測水溫的慣例,但汽車產業通常不這麼搞,一定確定接近百分之百的安全、可靠才會推出產品。由於汽車發生意外是人命關天的事情,因此汽車相關產品的試驗階段需要的時間相當久,穩定性測試的結果必須要有相當的可靠度才能問世。


▲ 不論是那一系統,滿布車子內外的感測器都是獲取外面環境資訊的重要工具。

目前車輛中心發展的自動駕駛技術,可以做到 L1~L2 等級的自動駕駛程度,包括將一一為大家介紹:

自動輔助駕駛系統

儘管要到達完全的自動駕駛還有好長一段光景,但是以交通事故成因大都是因人類疲勞而注意力渙散造不幸。不少房車都有的自動緊急煞車(Autonomous Emergency Braking System,AEB System),車輛中心也有研發相關技術。搭配車道跟隨系統(Lane Following System,LFS),維持車輛在車道內行駛,遇緊急狀態提醒駕駛趕緊握好方向盤,甚至是緊急煞車,避免意外發生。

▲ 車輛中心人員說明他並未操控車子,一切由系統運行。

▲ 在車輛中心的試車場上,不論是在何種道路狀況,像是在彎道上,系統仍能靠著車子前面的攝影鏡頭,維持在固定的車道上。

自動緊急煞車系統

車輛中心在試車道上,駕駛不碰觸方向盤和煞車,直接讓媒體實地體驗車輛中心開發的 AEB 系統,以及車道跟隨系統,讓車輛在道路行駛中,無論直線、轉彎皆能自行維持在車道內,當遇到其他車輛或行人等障礙物出現時,系統將主動介入控制煞車,以減輕事故所造成的傷害,進而達到更安全的行車環境。 實地體驗的結果是當 AEB 系統啟用時,坐前座很驚險,感受到相當強的慣性。

▲ 前面的車輛帶著試撞部分,測試後車緊急煞車系統是否正常啟用。

智慧車、自動駕駛系統是相當複雜的技術,要驗證安全性也有一套準則標準。而為了讓各家車廠開發的自動駕駛車輛都能符合公認的安全標準,如歐盟新車安全評鑑協會(European New Car Assessment Programme,Euro-NCAP)制定一系列針對自動緊急煞車系統(AEB)測試方式與評分標準,並依據系統在各種使用條件下所展現的防護能力給予客觀驗證評價。車輛中依據現在普遍接受的檢驗標準,已經建置與歐洲同步且符合國際標準之自動緊急煞車系統驗證技術,可實施行人防撞偵測功能測試(AEB Pedestrian)、AEB NCAP主動安全系統驗證技術(AEB City & AEB Inter-Urban)等,可以評估廠商研發之系統效能、分析測試數據,以提供產品驗證及改良建議。

無線充電技術

車子上的半導體零組件將會越來越多,傳統的電瓶已經沒辦法滿足越來越多的電力需求,還有裝置之間也得連網,因此就需要無線充電系統及車載網路管理。現行車輛高功率的充電環境又較 3C 產品複雜,經常引發安全疑慮,因此車輛中心所開發出之車用無線充電系統(Wireless Charging System,WCS),便加入金屬異物偵測(Foreign Object Detection,FOD)技術,能即時判斷金屬異物入侵與否,有效中斷無線電力傳輸,並將相關訊息發送至客戶端,避免導電產生安全問題,以提升系統安全性。本系統整合了多項技術,包含整車網路系統、整車控制、電能管理、異物偵測,有效即時反應充電異常狀態,並以「網路診斷」及「網路管理」溝通整車系統,強化系統之智慧及安全性。

▲ 車輛中心人員說明無線充電系統的運作方式。

▲ 一般設想的汽車無線充電方式是車子開過去,就能跟地面架設的充電模組配對開始充電。但為了研發、測試上方便操作,無線充電模組轉了 90 度。

停車場域自動輔助駕駛系統協助車子自動進出停車場

很多應該都有進停車場找車位的時候,常常需要不斷轉圈圈找出那裡有空車位,而離開時可能忘了停車的車位在那裡,需要花不少時間找尋車子。停車場域自動輔助駕駛系統就是一以上場景的救星!這套系統匯集六項功夫於一身,能夠讓車子在停車場自動停車,運用超音波與影像之感測技術,整合自動控制、感知辨識及車輛聯網技術,再藉由自動停車系統、車道跟隨系統、車輛定位系統、車輛遠端控制系統、障礙物偵測技術等六項技術功力,讓駕駛者可以透過人手一機的行動裝置,獲得停車位資訊,輕輕一點,即可讓車輛自動尋找車位、停妥車輛;當回到停車場時,再輕輕一點,車輛自動從停車位駛出,駕駛便能夠輕鬆取車,提供駕駛者更為便利的停車環境。

▲ 測試人員用手機 App 叫車選停車位,就能夠停到對應的停車位。

筆者實際體驗的結果,在車輛中心建築跟建築之間的一般車道,車子能夠被手機 App 叫到定位載人,在路途中成功閃避障礙物,並且成功回到原來上車的地點,車上乘客下車。

行人辨識系統

自動駕駛車輛要能上路,一定要能掌握不同方向來車,即時做出決定,避免意外發生。而在台灣以及東南亞國家,機車是相當普遍的交通工具,車子的辨識系統要能識別機車,避免擦撞等狀況發生。車輛中心研發的行人辨識系統,運用機器學習辨識截取的動態影響中的交通工具或行人。目前系統的辨識率以汽車的辨識率最好,而機車、單車、行人(類行人)部分還有待提升。

▲ 儘管汽車的辨識率相當高,不過在機車或類人形部分,行人辨識系統還得再往上提升。

當然自動車上路,一定要能掌握行人動向。德國研究數據顯示,在行人的車禍事故中,高達 40% 的比率是因駕駛者未察覺到行人,使車輛在未減速的情況下直接衝撞行人,因而讓人員損傷加重。有鑑於影像辨識技術日漸成熟,並且廣泛應用在車輛安全上,因此,車輛在防撞系統的設計上,對於行人的辨識功能也逐漸被重視。歐盟新車安全評鑑協會(European New Car Assessment Programme,Euro-NCAP)公布的測試規範要求,已將自動緊急煞車之行人偵測功能列為2017年的評分項目之一。車輛中心為因應此技術發展趨勢,運用動態偵測範圍技術、行人識別技術發展出行人辨識系統,同步導入開發自動緊急煞車系統(AEB)幫助駕駛者提高車輛附近行人或突發狀況的察覺能力,降低車輛在未減速的情況下直接撞擊行人的意外事故。

▲ 用在模擬突然出現的行人,測試車子的緊止防煞系統是否會即時啟動。

儘管自動駕駛車輛的目標很簡單,就是要人不用費心開車,專心享受交通工具來往的樂趣。但從車輛中心研發的五大技術來看,每一項技術看似達成的目標很簡單,卻是得經過不斷測試改進後,卻認能運行而且能確保車內人的安全才能推出,進而技轉給國內廠商。對科技媒體來說車輛中心是相當陌生的單位,但在自動駕駛和智慧車的議題中也有一席之地。我們也期待車輛中心驗證與研發,領導國內廠商能在自動駕駛、智慧車的浪潮下乘風破浪做出一番成績出來。

▲ 早期的自動駕駛系統測試時必須有圖中的關閉系統,切換為人工駕駛的功能,如今透過直接操作方向盤就能切換成人工操作了。

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※別再煩惱如何寫文案,掌握八大原則!

※教你寫出一流的銷售文案?

※超省錢租車方案

FB行銷專家,教你從零開始的技巧

聚甘新

韓系電池發展受阻,中國動力電池現良機

三星Note 7手機的頻頻爆炸事件,使得韓系電池企業在中國市場發展受阻,與之合作的新能源汽車生產商不得不考慮更換電池配套商;搭載三星SDI動力電池的大陸本土車企新能源車,如今也暫時停產,而相關法則也對外資電池廠「say no」,這讓韓系電池工廠遭遇大難題。

根據廣州日報報導,近日大陸江淮汽車暫時停產其純電動汽車IEV6S,原因正出在該車所配置的三星SDI電池上,因三星SDI電池未能進入大陸工信部公佈的《汽車動力蓄電池行業規範條件》企業目錄(俗稱「電池目錄」),使得江淮IEV6S無法獲得國家補貼。

按照之前江淮與三星SDI簽署的合作計畫,兩家公司將建立長期的供貨合作夥伴關係,如今因為電池目錄原因,兩家不得不暫時擱淺進一步合作計畫。據悉,江淮9月起生產的IEV6E車型開始改採用來自大陸本土的合肥國軒高科動力能源的電池。

在此之前,作為北汽新能源「蜂鳥計畫」裡的純電動車,被北汽寄予厚望的EX200也因採用韓系三元鋰電,目前已暫停與電池企業的配套合作。即便是大陸最大的汽車企業上汽集團,其採用的美國產A123和韓國的LG電池,也不在《通知》要求的範圍內,不得不面臨更換電池配套商選擇。上汽負責新能源技術的相關人士表示,至少需要一年左右才能把現有的電池換掉,加上產品的升級換代,需要兩年過渡期。

近幾年來,韓國電池企業快速崛起,三星SDI和LG化學與全球範圍多家汽車企業建立了電池供應關係。在中國,三星SDI在西安建成了專門生產汽車動力電池的工廠,於去年10月竣工投產;LG化學在南京合資成立的南京樂金化學新能源電池也是LG全球最大的電池工廠。同時,LG、三星等韓系電芯也已與大陸多家新能源汽車企業展開合作,如吉利新能源產品採用了部分LG的電池;去年三星SDI與大陸十多家商用車及轎車企業簽署了供應動力電池的協定,並已開始供應產品。

除三星SDI外,LG和松下等以日韓為首的國外電池廠家都在中國設廠,並以較優惠的價格和高性價比,試圖在中國新能源汽車產業中分一杯羹,而新頒發的《汽車動力蓄電池行業規範條件》猶如一道門檻,卡住了三星等日韓電池企業進軍中國本土市場的步伐。

有鑑於政策的不確定性,三星、LG等企業也希望透過與中國公司合資分享中國新能源汽車發展的紅利,進行自海外進口或大陸本土化生產的兩方面準備。三星電子繼入股比亞迪之後,三星SDI將與曙光股份、東軟睿馳汽車技術(上海)於大連合資成立睿馳新能源動力系統(大連),生產銷售新能源汽車動力電池包與充電機。

同時,也正因政策的不確定性,且大陸本土電池現階段在性價比存在的劣勢,也使得大陸本土車企進行了兩面準備,如吉利帝豪PHEV的動力電池同時選了韓國的三星和大陸本土的寧德時代,蔚來汽車也同時將三星和寧德時代作為備選的電池供應商。

今年6月20日,大陸工信部裝備工業司公佈了第四批《規範條件》企業目錄,包括中航鋰電、超微創元、遠東福斯特等32家企業入圍;截止目前,共有57家電池企業進入前四批企業目錄,但沒有一家外資企業入選。

(本文由授權提供)

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※超省錢租車方案

※別再煩惱如何寫文案,掌握八大原則!

※回頭車貨運收費標準

※教你寫出一流的銷售文案?

FB行銷專家,教你從零開始的技巧

聚甘新