关于2

Jun 07, 2016 pm 03:49 PM
kira-kira penghakiman kami berjumpa

在2-sat判定问题中我们经常会遇到这样一种情况,在一组相互矛盾的点Si和Si'中,必须选择Si而不能选择Si'。比如在poj 3678中有“每个数都是0或者是1,但是如果ab==1,则a和b都必须是1才可以满足”,在poj 3648有妻子必须坐在左侧,等等……。 拿poj 3678举例

    在2-sat判定问题中我们经常会遇到这样一种情况,在一组相互矛盾的点Si和Si'中,必须选择Si而不能选择Si'。比如在poj 3678中有“每个数都是0或者是1,但是如果a&&b==1,则a和b都必须是1才可以满足”,在poj 3648有妻子必须坐在左侧,等等……。
    拿poj 3678举例,网上的解决方法大都是这样的:用Si表示第i个变量的值为1,用表Si'示第i个变量的值是0。如果第i个变量必须置为1,则加上一条边(Si'-->Si)。而且描述一般就是“如果选择~x,则x必须选,所以就产生了矛盾”,但是我们知道在2-sat中判定是否存在矛盾的方法是判断每一组Si和Si'是否在一个强联通分量中,这个矛盾又怎样通过求强连通分量来发现呢?也就是说,这种方法虽然对,但是关于为什么要这样的描述非常模糊。
    我们知道2-sat在ACM中的应用主要有两种,一种是通过建图的情况判断是否存在可行的方案,另一种是得出有解后再反向构图,拓扑排序,染色得到一组可行解。
    对于只要判断是否存在可行方案,如果Si和Si'之间互相不可达的话其实加上或者不加这条边其实是没有什么任何影响的,如下图:
如果在1和2之间必须要选择2的话,则连接一条从1指向2的边,该图的不受任何影响。

关于2

    但是之所以要加上这边是为了防止下面这种情况的出现:

关于2该图中包括第一组在内的所有组中的两个点都不属于同一个强连通分量,符合2-sat,但是观察点1和点2后会发现从2出发可以到达1,但是从1出发却无法抵达2点,从逻辑上来说就是如果2发生则1必须会发生(由于1和2是对立事件,也就是说选择2的话会产生矛盾)。但是由于1并不能推出2,所以第一组仍然符合2-sat。这个时候如果规定在第一组中必须选择2。也就是加一条1-->2的边后就会使得1和2处于同一个强连通分量中,被判定无解。


    所以对于求是否存在可行方案的问题,加上这组Si-->Si'的目的就是如果Si'被选择后会产生矛盾的话就使得Si和Si'处于同一个强连通分量中,从而通过2-sat判断无解。

    对于输出一组解的问题,我的想法是如果连一条从1-->2的弧之后。在反向加边后,由于1和2肯定属于不同的联通分量,所以肯定会存在一条从belon[2]-->belon[1]的边存在。从而使得在拓扑排序中belon[2]较belon[1]更优先被染成1,且保证belon[1]肯定被染成-1。

    以上就是我对这个问题的理解,希望大家互相交流学习,本文博客地址:http://blog.csdn.net/ac_operation/article/details/6972358
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana anda mengubah jadual di MySQL menggunakan pernyataan Alter Table? Bagaimana anda mengubah jadual di MySQL menggunakan pernyataan Alter Table? Mar 19, 2025 pm 03:51 PM

Artikel ini membincangkan menggunakan pernyataan jadual Alter MySQL untuk mengubah suai jadual, termasuk menambah/menjatuhkan lajur, menamakan semula jadual/lajur, dan menukar jenis data lajur.

Bagaimana saya mengkonfigurasi penyulitan SSL/TLS untuk sambungan MySQL? Bagaimana saya mengkonfigurasi penyulitan SSL/TLS untuk sambungan MySQL? Mar 18, 2025 pm 12:01 PM

Artikel membincangkan mengkonfigurasi penyulitan SSL/TLS untuk MySQL, termasuk penjanaan sijil dan pengesahan. Isu utama menggunakan implikasi keselamatan sijil yang ditandatangani sendiri. [Kira-kira aksara: 159]

Apakah beberapa alat GUI MySQL yang popular (mis., MySQL Workbench, phpmyadmin)? Apakah beberapa alat GUI MySQL yang popular (mis., MySQL Workbench, phpmyadmin)? Mar 21, 2025 pm 06:28 PM

Artikel membincangkan alat MySQL GUI yang popular seperti MySQL Workbench dan PHPMyAdmin, membandingkan ciri dan kesesuaian mereka untuk pemula dan pengguna maju. [159 aksara]

Bagaimana anda mengendalikan dataset besar di MySQL? Bagaimana anda mengendalikan dataset besar di MySQL? Mar 21, 2025 pm 12:15 PM

Artikel membincangkan strategi untuk mengendalikan dataset besar di MySQL, termasuk pembahagian, sharding, pengindeksan, dan pengoptimuman pertanyaan.

Bagaimana anda menjatuhkan jadual di MySQL menggunakan pernyataan jadual drop? Bagaimana anda menjatuhkan jadual di MySQL menggunakan pernyataan jadual drop? Mar 19, 2025 pm 03:52 PM

Artikel ini membincangkan jadual menjatuhkan di MySQL menggunakan pernyataan Jadual Drop, menekankan langkah berjaga -jaga dan risiko. Ia menyoroti bahawa tindakan itu tidak dapat dipulihkan tanpa sandaran, memperincikan kaedah pemulihan dan bahaya persekitaran pengeluaran yang berpotensi.

Terangkan keupayaan carian teks penuh InnoDB. Terangkan keupayaan carian teks penuh InnoDB. Apr 02, 2025 pm 06:09 PM

Keupayaan carian teks penuh InnoDB sangat kuat, yang dapat meningkatkan kecekapan pertanyaan pangkalan data dan keupayaan untuk memproses sejumlah besar data teks. 1) InnoDB melaksanakan carian teks penuh melalui pengindeksan terbalik, menyokong pertanyaan carian asas dan maju. 2) Gunakan perlawanan dan terhadap kata kunci untuk mencari, menyokong mod boolean dan carian frasa. 3) Kaedah pengoptimuman termasuk menggunakan teknologi segmentasi perkataan, membina semula indeks dan menyesuaikan saiz cache untuk meningkatkan prestasi dan ketepatan.

Bagaimana anda mewakili hubungan menggunakan kunci asing? Bagaimana anda mewakili hubungan menggunakan kunci asing? Mar 19, 2025 pm 03:48 PM

Artikel membincangkan menggunakan kunci asing untuk mewakili hubungan dalam pangkalan data, memberi tumpuan kepada amalan terbaik, integriti data, dan perangkap umum untuk dielakkan.

Bagaimana anda membuat indeks pada lajur JSON? Bagaimana anda membuat indeks pada lajur JSON? Mar 21, 2025 pm 12:13 PM

Artikel ini membincangkan membuat indeks pada lajur JSON dalam pelbagai pangkalan data seperti PostgreSQL, MySQL, dan MongoDB untuk meningkatkan prestasi pertanyaan. Ia menerangkan sintaks dan faedah mengindeks laluan JSON tertentu, dan menyenaraikan sistem pangkalan data yang disokong.

See all articles