Deutsch English Français Italiano |
<55bd9a62e5a67aea90fc63a33b80a7293d403480.camel@gmail.com> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail From: wij <wyniijj5@gmail.com> Newsgroups: comp.lang.c Subject: Re: A P!=NP proof for review. Date: Tue, 25 Feb 2025 18:20:22 +0800 Organization: A noiseless patient Spider Lines: 184 Message-ID: <55bd9a62e5a67aea90fc63a33b80a7293d403480.camel@gmail.com> References: <ce3f0c1fdbf0cc7212ca97edbd5f525c254a7c02.camel@gmail.com> <vpfa11$2ti3o$1@paganini.bofh.team> <82424399a48d4d3b203579b36a329a4e95ac834c.camel@gmail.com> <vpj4gi$3dkul$1@paganini.bofh.team> MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Injection-Date: Tue, 25 Feb 2025 11:20:24 +0100 (CET) Injection-Info: dont-email.me; posting-host="056406fb70dd5451562b4f48fa52cf83"; logging-data="1995007"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+/lcRaTkhda3YWmiMFuuN3" User-Agent: Evolution 3.54.3 (3.54.3-1.fc41) Cancel-Lock: sha1:bNYMBAnaQeO63MKUS3RCyTpsrkM= In-Reply-To: <vpj4gi$3dkul$1@paganini.bofh.team> Bytes: 10485 On Tue, 2025-02-25 at 00:56 +0000, Waldek Hebisch wrote: > wij <wyniijj5@gmail.com> wrote: > > On Sun, 2025-02-23 at 14:06 +0000, Waldek Hebisch wrote: > > > wij <wyniijj5@gmail.com> wrote: > > > > This file is intended a proof that =E2=84=99=E2=89=A0=E2=84=95=E2= =84=99. The contents may be updated anytime. > > > > https://sourceforge.net/projects/cscall/files/MisFiles/PNP-proof-en= ..txt/download > > > >=20 > > > > The text is converted by google translator with minimal modificatio= n from > > > > https://sourceforge.net/projects/cscall/files/MisFiles/PNP-proof-zh= ..txt/download > > > >=20 > > > <snip> > > > > =C2=A0 Note: Because there are many ways to define =E2=84=95=E2=84= =99, the definition of ANP > > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (Another NP) is to make it eas= ier to deal with confusion. The general > > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 definition of =E2=84=95=E2=84= =99 does not require O(2^N) loops and C sets. The > > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 verification function v may on= ly require existence, not "given", and > > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 its false state has no time li= mit, nor does it say that all elements of > > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 C must be tested one by one. B= ut these are not important. > > >=20 > > > Sorry, this is crucial element. > > >=20 > > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 What we care > > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 about is whether there are Pti= me algorithms for various practical =E2=84=95=E2=84=99=E2=84=82 > > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 problems. In fact, comparing w= ith the definition in the textbook, the > > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 conditions required by ANP are= clearer and stricter, but the > > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 substantive meaning should be = the same. This point has some subjective > > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 elements, so I will not elabor= ate on it. > > >=20 > > > The devil is in details.=C2=A0 It was observed (short after P versus = NP > > > problem was clearly formulated) that by generalizing problem and > > > changing definitions one can make it go one way or the other. > > > Precise formulation uses notion of computatiom with oracles: you > > > are given an extra function F which solves some possibly hard problem= , > > > but you are "charged" only unit cost for using such a function. > > > With one F we have P(F) =3D NP(F), with other F we (provably!) have > > > P(F) !=3D NP(F).=C2=A0 Most methods of proving work the same regardle= ss > > > of F, so can not solve P versus NP. > > >=20 > > > To illustrate some of troubles consider a silly C function below: > > >=20 > > > bool right_guess(long i) { > > > =C2=A0=C2=A0=C2=A0 return (i =3D=3D MAGIC_CONSTANT); > > > } > > >=20 > > > where MAGIC_CONSTANT is a fixed constant of type long.=C2=A0 Your > > > task is to find i such that right_guess(i) returns true.=C2=A0 If > > > you are allowed to look at MAGIC_CONSTANT, than the task is > > > trivial, you just read the answer.=C2=A0 If you are only allowed to > > > call right_guess, but are not allowed to look at MAGIC_CONSTANT, > > > then problem is provably hard: you can not do better than looking > > > at large fraction of possibilities.=C2=A0 P versus NP problem is > > > analogous to "obfuscated C" problem: you are given source code > > > of right_guess, but this source is written in obfuscated form, > > > so that MAGIC_CONSTANT is not visible (actually, right_guess may > > > be computing something quite different).=C2=A0 So in C terms, the > > > P versus NP question is: can you de-obfuscate given function > > > well enough to decide if it returns true for some value. > > > Of course "can" means doing it in polynomial time and we > > > assume that function can do its computation in polynomial > > > time. > > >=20 > > > Note: C is not good fit for theoretical problems because basic > > > C type have fixed and rather small size.=C2=A0 For example current > > > popular implementations have 32-bit int type.=C2=A0 Replacing > > > long by int in right_guess we get problem which can be easily > > > solved by brute force on normal PC.=C2=A0 Using implementation with > > > 64-bit long we get problem which on current machines is > > > realistically hard, but possibly solvable on bigger machines. > > > Theoretical texts avoid such problems by using theoretical infinte > > > machines (like Turing machine).=C2=A0 I hinted above at another > > > possibility: with finite machines real question is we can > > > find answer substantially faster than using brute force. > > > But "substantially faster" would need more precise formulation > > > and speed of real machines go beyond what C specifies. > >=20 > > The purpose of this proof is to show that no polynomial algorithm exist= s that > > can solve NPC (real) problems. >=20 > You did not prove anything non-obvious.=C2=A0 It is well-known that > brute force search is exponential.=C2=A0 The real question is if > there is a different faster method.=C2=A0 Have you ever looked at > multiplication of large numbers?=C2=A0 Well-known method has > quadratic complexity and lot of people assumend that it is > is not possible to multiply faster.=C2=A0 But it is now known that > one can do better and you find on the net mixed C/assembly > code that multiplies large numbers "impossibly fast", that > is in time much shorter than time needed to perform instructions > in classical method. Echo from the market place does not change anything. Refuting my proof P!= =3DNP is easy, showing ANP!=3DNP may be a good try: My 'NP' is defined on real pr= oblems.=C2=A0 You may try to show some NP problem is not ANP, or ANP contains non-NP=C2= =A0problem. > Coming back to NP, standard problem is boolean satisfability. > It is practial problem, for example its solutions are used > to design digital chips.=C2=A0 Your "proof" essentially says that > satifability problem with 200 variables, which amount to > finding 200 bits will take of order of 2 to the power 200 > operation.=C2=A0 Easy estimations show that such complexity is > out of reach on current computers (time would be bigger > than age of our universe).=C2=A0 Now fetch from the net > 'minisat' and try how much time it needs to solve problems > with 200 variables.=C2=A0 I doubt that you will be able to > create problem with 200 variables that is hard for 'minisat'. > Actual practical experience is that 'minisat' (or similar > but improved programs) typically can solve quite large > satisfability problems, for example problems involving > 1000000 variables.=C2=A0 But 'minisat' uses much smarter method > than brute force and it takes advantage of specific > problem formulation.=C2=A0 And sometimes 'minisat' fails to > find soultion using available resources.=C2=A0 Both practical > and theoretical problem is: can we improve 'minisat' > so that it always works?=C2=A0 Proof of P !=3D NP would give > stong indication that this is impossible.=C2=A0 Cryptographers > have a different problem, they do _not_ want 'minisat' > (or other methods) to be able to solve (break) their > ciffers (AFAIK 'minisat' can not break real world > ciffers, but to formulate problem in way acceptable > to 'minisat' you probably need more than 200 variables). I think you don't really understand what P and NP mean. > > The goal is not the academic computation theory. > > C/C++ programmer can immediately have idea what is going on there. > > But I admit my proof is not good enough for request of detail to the le= vel of > > tape operations. > >=20 > > C/C++ is no less appropriate (Knuth even uses assembly) for theory. > > C has a strong tie with hardware, just like TM (in C, 'size' is relativ= e, > > rarely an issue in discussion of C language). >=20 > C++ is fine if you want to demonstrate that problem has fast solution > (which is main goal in Knuth books).=C2=A0 C++ is clumsy if you want to > _prove_ that there are no fast solution. If it refers to banp2(..). Then, why is it clumsy to prove in C++ (or C) that "without additional information, banp in Ptime is impossible"? Is there any more elegant way or language for this? > > Limitation is engineering things, but such limitation may actually be a= good > > thing. It links theory and reality. No matter how abstract the language= /theory > > is, it eventually need to be materialized. An example about this is abo= ut > > infinity, which is merely an infinite loop, others are all imagination. >=20 > You have strange thoughts about infinity.=C2=A0 Theoreticians use infinit= y > because it is easier and gives valuable insight into finite things. > Real world is messy and contains a lot of details which should be > irrelevant for problem that we want to solve.=C2=A0 Using infinity allows > simpler formulation which omits most of details, leaving only > what metters.=C2=A0 Tu put it differently, infinity is a fiction, but ========== REMAINDER OF ARTICLE TRUNCATED ==========