[理工] 台大資工 110資演 NPC

作者: lienasd126 (迷途の獅子)   2021-09-30 21:18:32
這一題前面有人發問過了,不過還是有點不清楚的地方,
https://i.imgur.com/igWRlSb.jpg
因為就vertex cover的定義是包含圖形所有邊的最小點集,
那麼我們在找點的時候只要看是否有包含所有邊,
那如題目所述的v1, v3, v4就好了,而對應到的是 x1, x3, x4,
那表格中的 yi 是為什麼產生的? 這方面有點不太懂 ???
另外我有上網查過了,如https://reurl.cc/GbEg2D
這裡也是用m_ei去做表示,但是就是也不知道為什麼會還需要這個變數,
如果只是為了湊後面變數的2,好像變得很硬要,可以請各位大神解釋,為什麼要有下面
的變數,謝謝~
作者: jacksoncsie (資工肥宅)   2021-09-30 23:41:00
推樓上回答
作者: BusterButter (奶油巴斯特)   2021-09-30 23:33:00
每條edge至少會被一個cover set裡的vertex給cover如果那條edge被兩端都是在cover set裡,那對應那條edge的digit是不是會被加兩次可是有的edge只有一個端點是在cover set裡面,所以我們為了讓除了最高位外的digit都被加到2次,才有了m_e (題目裡的y)
作者: BusterButter (奶油巴斯特)   2021-10-01 13:04:00
與其說是公平性 不如說m_e是為了讓我們定義target方便而已(除了最高bit 其他都是2)反正我們的目標是n_v的個數而不是m_e因為n_v的個數正是vertex cover set的cardinality
作者: joywilliamjo (joywilliamjoy)   2021-10-01 14:01:00
可是這題最後算出來是22222啊不是32222啊沒事是我看錯了
作者: alex391a (麥基)   2021-10-07 09:20:00
一個比較直觀一點的講法是今天如果沒有y那符合edge cover的取法結果有311111311112311122311121…也就是2^5種那我們有y之後 就可以透過拿某些y來加成322222相對的如果今天怎麼取都會有個地方為0例如312120,310122…那不管怎麼取y都加不到322222也就是找不到三個點可以cover所有edge

Links booklink

Contact Us: admin [ a t ] ucptt.com