यह तय करें कि मैट्रिक्स के कर्नेल में कोई भी गैर-शून्य वेक्टर नहीं है जिसकी सभी प्रविष्टियाँ -1, 0, या 1 हैं


27

बाइनरी मैट्रिक्स (प्रविष्टियाँ या ) द्वारा को देखते हुए , समस्या यह निर्धारित करने के लिए है कि क्या दो बाइनरी वैक्टर मौजूद हैं जैसे कि (सभी ऑपरेशन्स ने पर प्रदर्शन किया है )। क्या यह समस्या एनपी-हार्ड है?mnM01v1v2Mv1=Mv2Z

यह एनपी में स्पष्ट रूप से है क्योंकि आप गवाहों के रूप में दो वैक्टर दे सकते हैं।


समान रूप से: को देखते हुए , क्या एक गैर-शून्य वेक्टर , जो ?Mv{1,0,1}nMv=0

समान रूप से: vectors over , क्या दो अलग-अलग जैसे कि ?nX={x1,,xn}{0,1}mA,BXxAx=xBx


जब तक मैं इस प्रश्न को गलत नहीं समझ लेता, क्या यह निर्धारित करने के बराबर नहीं है कि क्या कोई गैर-शून्य ऐसा है जो ? और क्या यह की रैंक निर्धारित करके हल नहीं किया गया है ? vMv=0M
mhum

8
@ म्हुम नहीं, यह निर्धारित करने के बराबर है कि यदि कोई नॉनजरो ऐसा । v{1,0,1}nMv=0
साशो निकोलोव

आह। मुझे याद आया कि भी बाइनरी होना चाहिए। मेरी गलती। vi
mhum

2
0/1-पूर्णांक प्रोग्रामिंग के लिए व्यवहार्यता समस्या की तरह लगता है। क्या ऑपरेशन्स या over ? ZZ2
केव

3
समस्या का सुधार: vectors over । क्या दो अलग-अलग हैं, जो कि ? मुझे लगता है कि एनपी-हार्ड होने की संभावना अधिक है अगर रकम को मॉडुलो दो नहीं लिया जाता है, तो ऑपरेशन पर खत्म हो जाते हैंnX={x1,,xn}{0,1}mA,BXxAx=xBxZ
जॉन डी।

जवाबों:


7

मैं user17410 समतुल्य सूत्रीकरण का उपयोग करता हूं:

इनपुट: vectors over , इनपुट का हिस्सा है प्रश्न: क्या दो अलग-अलग जैसे कि एक्स = { x 1 , ... , एक्स मीटर } { 0 , 1 } एन एन , बी एक्स Σ एक्स एक एक्स = Σ एक्स बी एक्सnX={x1,,xm}{0,1}nn
A,BX

xAx=xBx

कठोरता प्रमाण में कई मध्यवर्ती कटौती शामिल होती है जो मानक "एक्वैट SUBSET SUM समस्या" की कठोरता को साबित करने के लिए उपयोग की जाने वाली उसी "श्रृंखला" का पालन करती हैं:

X3C SUBSET SUM विभाजन EVEN-ODD पार्टीशन / EQUAL SUBSET SUM

(मैं अभी भी इसे जाँच रहा हूँ इसलिए यह गलत हो सकता है :)

चरण 1

निम्न समस्या ( 0-1 VECTOR SUBSET SUM ) एनपी-पूर्ण है: दिए गए , वैक्टर ओवर और एक लक्ष्य वेक्टर , निर्णय लेते हैं अगर , तो उस प्रमाण में : प्रत्यक्ष कमी से 3-SETS (X3C) में प्रत्यक्ष कमी: तत्वों का एक सेट दिया गया और एक संग्रह के तीन तत्वों सबसेट हम निर्माण इसी 0-1 सदिश योग उदाहरण सेटिंग यदि और केवल यदि तत्वएक्स मैं { 0 , 1 } एन टी एक एक्स Σ एक्स एक एक्स = टी एन वाई = { y 1 , , Y n } सी एम सी = { सी 1 , , C m } x iX={x1,,xm}xi{0,1}ntAX

xAx=t
nY={y1,...,yn}CmC={C1,...,Cm}जे सी आई टी = [ , , .1 ]xi[j]=1j में शामिल है ; ।Cit=[1,1,...1]

कदम 2 ढूँढना दो बराबर राशि सबसेट के बीच 0-1 वैक्टर से अधिक , दो बराबर राशि सबसेट पाने के लिए बराबर है घिरे आकार के तत्व के साथ वैक्टर की जहां तय करने के लिए ।एमA,Bm, बी x 1x m m a x { x i } = O ( ( m n ) k ) k{0,1}nA,Bx1...xmmax{xi}=O((mn)k)k

उदाहरण के लिए वैक्टर का सेट:

x1 2 1 0 1
x2 1 2 3 1

0-1 वैक्टर के समतुल्य है:

x1  1 1 0 1   1 0   0 0 0
    1 0 0 0   0 1   0 0 0 
    0 0 0 0   1 1   0 0 0 
              ^ ^
                +-- 0 elsewhere

x2  1 1 1 1   0 0   1 0 0
    0 1 1 0   0 0   0 1 0
    0 0 1 0   0 0   0 0 1
    0 0 0 0   0 0   1 1 1
                    ^ ^ ^
                      +-- 0 elsewhere

अनौपचारिक रूप से 0-1 वैक्टरों को समूहीकृत किया जाता है (यदि आप x2 समूह के एक वेक्टर का चयन करते हैं और इसे सबसेट जोड़ते हैं , तो आपको को दूसरे दो में शामिल करने के लिए मजबूर किया जाता है और अंतिम को सबसे उपसौर में रखा जाता है ) और इसमें रकम होती है unary (यही कारण है कि संबंधित गैर बाइनरी वैक्टर में ऐसे तत्व होने चाहिए जो बहुपद के संबंध में संबंध में हैं )।A B m nAABmn

तो निम्न समस्या एनपी-पूर्ण है।

चरण 3

निम्न समस्या ( 0-1 VECTOR PARTITION ) NP-complete है: , वैक्टर हैं, तो तय करें कि क्या को दो उपसमूह में विभाजित किया जा सकता है जैसे कि x मैं { 0 , 1 } एन एक्स बी 1 , बी 2 Σ एक्स बी 1 एक्स = Σ एक्स बी 2 एक्सB={x1,,xm}xi{0,1}nXB1,B2

xB1x=xB2x

प्रमाण : 0-1 क्षेत्र से : दिया गया और लक्ष्य राशि सदिश ; चलो , हम निम्नलिखित वैक्टरों में जोड़ते हैं : और : ।X={x1,,xm}tS=xiXb=t+2Sb=t+SB=X{b,b}

( ) मान लीजिए कि मौजूद है जैसे उस ; हमने और ; हमारे पास AXxAx=tB1=A{b}B2=BB1=X{A}{b}

xB1=b+xAx=tt+S=2S
xB2=b+xXAx=b+SxAx=2S

( ) मान लीजिए कि और बराबर राशि है। दोनों एक ही सेट से संबंधित नहीं हो सकते (अन्यथा उनका योग और दूसरे सेट में तत्वों द्वारा "संतुलित" नहीं किया जा सकता)। मान लीजिए कि ; हमारे पास है:B1B2b,b3Sb=t+2SB1

t+2S+xB1{b}x=t+S+xB2{b}x

इसलिए हमें और होना चाहिए । 0-1 VECTOR SUM के लिए एक वैध समाधान है।xB1{b}x=tB1{b}

हम केवल सेट में 0-1 वैक्टर की अनुमति देते हैं , इसलिए वैक्टर एसटीईपी 2 में दिखाए गए अनुसार "एकात्मक में प्रतिनिधित्व किया जाना चाहिए"।Bb,b

चरण 3

समस्या अभी भी एन पी-सम्पूर्ण वैक्टर से गिने जा रहे हैं अगर है और दो उप-समूहों बराबर आकार होना आवश्यक है और हम चाहते हैं कि वास्तव में से एक होता है के लिए (हां, तो बराबर आकार बाधा से, इस जोड़ी के अन्य तत्व में शामिल किया जाना चाहिए ) ( 0-1 VECTOR भी करीब PARTITION )।x1,...,x2nX1,X2X1x2i1,x2i1inX2

प्रमाण:: कमी 0-1 क्षेत्र विभाजन से है और विभाजन से EVEN-ODD विभाजन तक समान है। तो हैं वैक्टर से अधिक पर दो वैक्टर के साथ प्रत्येक वेक्टर की जगह :X={x1,...,xm}m{0,1}n{0,1}2n+2m

       1   2       n
 --------------------
 x_i  b_1 b_2 ... b_n

 becomes:

           1 2 ... 2i ... 2m
  --------------------------
  x'_2i-1  0 0 ...  1 ...  0  b_1 b_2 ... b_n   0   0  ...  0  
  x'_2i    0 0 ...  1 ...  0   0   0  ...  0   b_1 b_2 ... b_n 

तत्व के कारण , वैक्टर और को एक ही सबसेट में समाहित नहीं किया जा सकता है; और 0-1 VECTOR EVEN-ODD PARTITION का एक वैध समाधान मूल 0-1 VECTOR PARTITION के एक वैध समाधान के अनुरूप है (समाधान के प्रत्येक वेक्टर के तत्वों को केवल 2m + 1..2m + n चुनें जो वैक्टर को छोड़ते हैं। उन पदों में शून्य)।2ix2i1x2i

चरण 4

0-1 VECTOR EQUAL SUBSET SUM (प्रश्न में समस्या) NP- पूर्ण है: 0-1 VECTOR EVEN-ODD पार्टिशन से कमी ईवीएन-ओडीडी पार्टिशन से EQUAL GUM SUBSET तक की कमी के समान है, जैसा कि गेरहार्ड जे। वोडिंगेर में साबित हुआ । , Zhongliang यू, बराबर-सबसेट-राशि समस्या पर : दिए गए एक सेट का आदेश दिया की वैक्टर से अधिक , हम एक निर्माण सेट की पर सदिशों ।A={x1,...,x2m}2m{0,1}nY3m{0,1}2m+n

हर वेक्टर हम इस तरह से एक वेक्टर over का निर्माण करते हैं:x2i1,1imy2i1{0,1}2m+n

  1 2 ... i i+1 ... m  m+1 m+2 ... m+i ... 2m  2m+1 ... 2m+n
  ------------------------------------------------------
  0 0 ... 2  0  ... 0   0   0       1       0  x_{2i-1}

प्रत्येक वेक्टर हम इस तरह से एक वेक्टर ओवर का निर्माण करते हैं:x2i,1im1y2i{0,1}2m+n

  1 2 ... i i+1 ... m  m+1 m+2 ... m+i ... 2m  2m+1 ... 2m+n
  ------------------------------------------------------
  0 0 ... 0  2  ... 0   0   0       1       0  x_{2i}

हम तत्व को मैप करते हैंx2m

  1 2 ...       ... m  m+1 m+2 ...  . 2m  2m+1 ... 2m+n
  ------------------------------------------------------
  2 0 ...       ... 0   0   0          1  x_{2m}

अंत में हम डमी तत्व जोड़ते हैं:m

  1 2 ...       ... m  m+1 m+2 ...  ... 2m  2m+1 ... 2m+n
  ------------------------------------------------------
  4 0 ...       ... 0   0   0            0  0    ... 0
  0 4 ...       ... 0   0   0            0  0    ... 0
  ...
  0 0 ...       ... 4   0   0            0  0    ... 0

फिर से ध्यान दें कि मूल्यों वैक्टर को एसटीईपी 2 में दिखाए गए 0-1 वैक्टरों के एक समूह का उपयोग करके "एकात्मक" में दर्शाया जा सकता है।>1

Y में दो सबसेट समान राशि वाले हैं यदि और केवल यदि का सम-विषम विभाजन है। Y1,Y2X


जिसे आप 0-1 वेक्टर विभाजन कहते हैं, यह निर्धारित करने की समस्या के बराबर है कि क्या एक सेट सिस्टम में विसंगति है। 0. यह एनपी हार्ड है, क्योंकि यह 2-2-सेट-विभाजन की समस्या को पकड़ता है, इस पेपर में गुरु 9 को गुरुस्वामी द्वारा देखें cs.cmu.edu/~venkatg/pubs/papers/ss-jl.ps ; मेरी कागज थोड़ा विसंगति की कठोरता के बारे में अधिक है paul.rutgers.edu/~anikolov/Files/charikarM.pdf
Sasho निकोलोव

इसके अलावा, मेरा मानना ​​है कि आप सम-विषम विभाजन समस्या को गलत बताते हैं। यदि कोई दो लगातार वैक्टर एक ही सेट में नहीं हो सकते हैं तो समस्या तुच्छ है। मेरा मानना ​​है कि आपका मतलब है सभी के लिए आवश्यक है और|Xi{x2j1,x2j}|=1i{1,2}1jm
Sasho Nikolov

@ सशाओनिकोलोव: हां, मेरा मतलब है कि हर जोड़ी (और प्रमाण में ) बिल्कुल एक है में शामिल ; मैं उत्तर को संपादित करूँगा(x2i1,x2i)(x2i1,x2i)X1
Marzio De Biasi

8

संपादित करें: मेरे मूल प्रमाण में एक बग था। मैं अब मानता हूं कि यह तय है।

हम EQUAL SUM SUBSETS की समस्या को इस समस्या को कम करते हैं। एक्वल सम SUBSETS की समस्या है: पूर्णांकों का एक सेट दिया गया है , दो समसामयिक उपसमूह खोजें, जिनमें समान राशि हो। एक्वॅल सुम SUBSETS को NP-complete माना जाता है m

मान लीजिए ये बिट स्ट्रिंग्स वैक्टर नहीं थे, लेकिन बाइनरी में -बिट संख्याओं का प्रतिनिधित्व करते थे । फिर एक्वल सन SUBSETS की कमी से समस्या पूरी होगी। मैं दिखाऊंगा कि इन वैक्टरों को कैसे व्यवहार करना है जैसे वे बाइनरी नंबर हैं। हमें जो कुछ करने की आवश्यकता है वह वहन करने में सक्षम है; यही है, आसन्न निर्देशांक के प्रत्येक जोड़े के लिए, हमें वेक्टर को प्रतिस्थापित करने में सक्षम होने की आवश्यकता है .. 0।2 .. द्वारा .. 10 ।।n

हम वह कैसे कर सकते है? हमें एक गैजेट की आवश्यकता है जो हमें ऐसा करने की अनुमति देता है। विशेष रूप से, हमें दो उपसमूहों की आवश्यकता होती है जिनके sums ..02 .. x और ..10 .. x हैं, जहां x नए निर्देशांक (यानी, निर्देशांक का उपयोग करके थोड़ा स्ट्रिंग है) जो किसी भी निर्देशांक के बाइनरी नहीं हैं अभ्यावेदन), और जहां एक्स के अनुरूप नए बिट पदों में एक ही राशि के साथ दो सबसेट बनाने का एक ही तरीका है।n

यह करना काफी आसान है। आसन्न बिट पदों की प्रत्येक जोड़ी के लिए, निम्न फॉर्म के तीन वैक्टर जोड़ें। यहां अंतिम दो बिट्स निर्देशांक हैं जो केवल इन तीन वैक्टरों में गैर-शून्य हैं, और नीचे दिए गए प्रत्येक बिट स्पष्ट रूप से 0 नहीं है।

।।१० .. ११
..०१ .. १०
.. ०१ .. ०१

एक उदाहरण देता हूं। हम यह दिखाना चाहते हैं कि 5 + 3 = 8 कैसे काम करता है।

यहाँ 8 = 5 + 3 बाइनरी में है:

1000

=

0101
0011

ये बिट स्ट्रिंग्स बाइनरी में एक ही राशि देते हैं, लेकिन वेक्टर जोड़ में नहीं।

अब, हमारे पास 1, 2, 4 स्थानों पर कैरी है, इसलिए हमें तीन वैक्टर के तीन सेट को समीकरण में जोड़ने की आवश्यकता है ताकि इन कैरी को निष्पादित किया जा सके।

1000 00 00 00
0001 00 00 01
0001 00 10 10
0010 00 01 00
0010 00 10 00
0100 01 00 00
0100 100 00 00

=

0101 00 00 00
0011 00 00 00 00
00 00 11
0100 00 11 00
1000 11 00 00

ये सेट अब वेक्टर जोड़ में समान हैं। रकम हैं:

1222 11 11 11

दोनों मामलों में।

इस निर्माण अच्छा काम करता है अगर वहाँ स्थिति में केवल एक कैरी, लेकिन वहाँ संभावित ऊपर हो सकता है के लिए स्थिति के अनुसार किया जाता है, और आप देखेंगे कि आपके निर्माण करने के लिए संभाल कर सकते हैं सुनिश्चित करने की आवश्यकता किया जाता है, और अलग अलग किया जाता हस्तक्षेप नहीं करते कि एक दूसरे के साथ। उदाहरण के लिए, यदि आपने आसन्न पदों की एक ही जोड़ी के लिए तीन वैक्टर के दो अलग-अलग सेट जोड़े हैं (जो कि मैंने अपने प्रमाण में प्रस्तावित किया है):nnn

..01 .. 01 00
..01 .. 10 00
..10 .. 11 00
..01 .. 00 01
..01 .. 00 10
..10 .. 00 11

आपको समस्या है कि आपको एक ही राशि देने वाले वैक्टर के दो अलग-अलग सेट मिलते हैं:

..01 .. 01 00
..01 .. 10 00
..10 .. 00 11

=

..01 .. 00 01
..01 .. 00 10
..10 .. 11 00

इसे कैसे ठीक करें? वैक्टर का एक सेट जोड़ें जो आपको 1 ले जाने देता है, एक सेट जो आपको 2 ले जाने देता है, और एक सेट 4, 8, , 2 । मैं अभी इस निर्माण के विवरण पर काम नहीं करने जा रहा हूं, लेकिन यह बिल्कुल सीधा होना चाहिए। चूंकि प्रत्येक संख्या में एक अद्वितीय बाइनरी प्रतिनिधित्व है, यह आपको किसी भी संख्या को तक ले जाने देगा । उदाहरण के लिए 4 ले जाने के लिए, आपको चार वैक्टर की आवश्यकता होती है, जिसमें दो वैक्टर के समान राशि होती है, और जिसके लिए दो सेटों के बीच एकमात्र रैखिक संबंध होता है। उदाहरण के लिए, सेटलॉग एन एनlognn

..01 .. 11000
..01 .. 00100
..01 .. 00010
..01 .. 00001
..10 .. 10001
..10 .. 01110

काम करता है। आप आसानी से उस संबंध की जांच कर सकते हैं

11000
00100
00010
00001

=

10001
01110

इन छह वैक्टरों के बीच एकमात्र संभव संबंध है क्योंकि इन छह पंक्तियों द्वारा गठित मैट्रिक्स में रैंक 5 है।


एक स्पष्टीकरण, आप कहते हैं "अब, हमारे पास 1, 2, 4 स्थानों पर" है; लेकिन समस्या में हम नहीं जानते कि कौन से वैक्टर चुने गए हैं, इसलिए हमें कैरी गैजेट को प्रत्येक आसन्न बिट स्थिति में जोड़ना चाहिए? और उदाहरण की पहली सूची में 7 वैक्टर हैं, क्या यह सही है?
मार्जियो डी बियासी

मान लीजिए कि सबसेट समस्‍या का समाधान है। अर्थात: हमारे पास 3 + 5 = 8 है। अब, हम इस गवाह में जोड़ को देख सकते हैं और पता लगा सकते हैं कि कैर्री कहाँ हैं। यह हमें वेक्टर जोड़ समस्या के लिए समाधान देता है। एक समस्या का एक समाधान है यदि और केवल यदि दूसरा करता है।
पीटर शोर

लेकिन कमी कैसे उदाहरण के लिए काम करती है यदि उपसमुच्चय का उदाहरण और लक्ष्य राशि (संबंधित सदिश उदाहरण क्या है)? 82,3,5,78
मारजियो डी बियासी

PS मुझे यह भी प्रमाण मिला कि समस्या NP-complete है, लेकिन यह आपकी तुलना में बहुत लंबी है, इसलिए मैं इसे समझने की कोशिश कर रहा हूं ... सरल बेहतर है :-)
Marzio De Biasi

इसका मतलब यह है कि दूसरी समस्या के लिए, हमें कैरी गैजेट को आसन्न बिट स्थिति में जोड़ना होगा। वास्तव में, हम हो सकता है के बाद से किया जाता है उस स्थिति में, हम जोड़ने के लिए है कि बिट स्थिति के लिए कैरी गैजेट की प्रतियां। और मुझे बस एहसास हुआ कि काम नहीं करता - हमें चतुर होना होगा। मुझे पता है कि यह कैसे करना है, लेकिन मुझे उत्तर को संशोधित करना होगा। n1n1
पीटर शोर

3

यह प्रश्न का उत्तर नहीं देता है, लेकिन इसमें कुछ सहायक अवलोकन हो सकते हैं। मैं इसे एक टिप्पणी के रूप में नहीं बताना चाहता था क्योंकि मुझे पढ़ने के लिए लंबी, खंडित टिप्पणियां परेशान करती हैं

प्रश्न के बारे में मेरी टिप्पणी में बताई गई समस्या का सुधार:

इनपुट: vectors over , इनपुट का हिस्सा हैnX={x1,,xn}{0,1}mm

प्रश्न: क्या दो अलग-अलग जैसे कि A,BX

xAx=xBx

शायद मुझे ध्यान देना चाहिए कि एक को को मल्टीसेट्स के रूप में मानना ​​चाहिए (वैक्टर अद्वितीय नहीं होने चाहिए) और sums खत्म हो गए हैं ।X,A,BN

मैं इस समस्या को 2SUBSET-BINARY-VECTOR-SUM कहने का प्रस्ताव करता हूं, इस तथ्य के कारण कि हम बाइनरी वैक्टर के 2 सबसेट की तलाश कर रहे हैं।

कुछ अवलोकन:

  • यदि में एक वेक्टर कई बार होता है तो उत्तर तुच्छ हो जाता है। चलो और । तब गवाह के रूप में काम करता है।Xxi,xjXxi=xjA={xi},B={xj}

  • यदि में वैक्टर में से एक में केवल 0 होता है, तो यह तुच्छ है। चलो कि वेक्टर हो। फिर हर यह एक गवाह है।X0XAX{0}B=A{0}

  • मान लें कि इस तरह के एक गवाह वहां मौजूद । तात्पर्य यह है कि प्रत्येक वेक्टर जो लेकिन में नहीं है, केवल शून्य से मिलकर बनता है।ABBA

  • उपरोक्त दो बिंदुओं को ग्रहण करने के लिए: साक्षी साथ मौजूद है, यदि में कम से कम एक वैक्टर में केवल शून्य है।A,BABX

  • मान लें कि जैसे कि । आप दोनों सेट में सामान्य तत्वों को निकाल सकते हैं और अभी भी एक सही गवाह है।A,BAB

इन बिंदुओं का अनिवार्य रूप से मतलब है कि आप को दो सेटों ( ) या तीन सेटों में विभाजित करना चाहते हैं । तीसरा सेट उन वैक्टर का प्रतिनिधित्व करता है जो या लिए चुने नहीं गए थे । चलो दूसरी तरह के स्टर्लिंग संख्या हो - का एक सेट के विभाजन के तरीकों की संख्या में वस्तुओं गैर खाली विभाजन। फिर संभव समाधान हैं, इसलिए ब्रूट बल यहां संभव नहीं है।एक बी = एक्स बी एस ( एन , कश्मीर ) n k एस ( n , 3 ) + एस ( n , 2 )XAB=XABS(n,k)nkS(n,3)+S(n,2)

यदि आप वैक्टर को (2SUBSET-VECTOR-SUM) से अधिक होने देते हैं, तो हम इस समस्या के लिए UNIQUE-PARTITION को कम करने का प्रयास कर सकते हैं । चलो और बस अद्वितीय विभाजन के कहने पारित (अगर यह 0 होता है, तो पहले उसे हटा तुच्छ समाधान से बचने के लिए)। हालांकि, यह संभव समाधान बाद से काम नहीं करता है जरूरी सभी इनपुट तत्वों को शामिल नहीं करता है: एम=1,बीNmm=1A,B

पर विचार करें । यह UNIQUE-PARTITION में नहीं है, लेकिन 2SUBSET-VECTOR-SUM में है। शायद का उपयोग करके हम इनपुट को विभाजित करने के लिए को बाध्य करने के लिए अतिरिक्त वेक्टर प्रविष्टियों का उपयोग कर सकते हैं ।एक = { 1 , 2 } , बी = { 3 } मीटर > 1 , बी{1,2,3,5}A={1,2},B={3}m>1A,B

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.