Thursday, October 2, 2008

Just a blog entry

Any small mistake or negligence in the care of my father by care givers means a dramatic follow up for my father, and a lot of nerves and extra effort by me.

I sleep little these days, and I am often sleepy and unable to work on my projects. Thus I start or restart to work on a project then stop and switch to a new one. Unfortunately, I have stopped again my efforts on baroque numbers. I want to come back to the attractive for me goal of finding a bunch of new baroque numbers, but I already am writing knols on general topology, on euclidean geometry, on art of agreeing, on dabanese. And I'd like to write on many other topics, especially on more mathematical topics: elementary algebraic topology, elementary number theory, combinatorics, on translation lattices, ... Knols possibly will get a larger audience than a blog. Blog can be more of writing for myself mainly. After all, this very entry is sooooooo embarrassingly boring.

In topology, I'd like to present my theory of universal functions; also my cubical polyhedra approach to algebraic topology, and about the geometry of cubical polyhedrons as well. I have outlined the theory of cubical polyhedra back in Poland, in late sixties. Then in 1970, with J.B., when he was my Ph.D. student at UofM in A2, the one and only ever (I wish I had many) we published a series of papers in Italy, and J.B got his degree in a record fast time.

When it comes to number theory, I should stop playing on a kindergarten level, I should learn some advanced tools, analytic or combinatorial (sieves). Elementary games are fun but the advanced ones are so much more!

I got far away from poetry. I am still a bit active on one English language board, and on one Polish board (Poewiki) but it's only inertia, without contributing much of my energy. It's been ages since I've written any poem. I even feel that I am distancing myself from English! Objectively, I do have contact, like this blog, and in general mainly via Internet, a bit from tv, bits and pieces, when I visit my father. Hm, I have more contact with English than with Polish these days. But my contact with native speakers of (American) English is limited, despite one sharing my apt in the past three months or so.

Yes, it's early, only 21:24 but I definitely am sleepy. Let me lie down for a few minutes. Most of the time I am at the care house at this time, but today my father went to bed early. Later, I might to write about my (rather depressing) impressions from the presidential race.

I should check this entry for errors (typos, etc) but I'll stop now. I have this annoying feeling that I use word "but" way too often.

Thursday, September 4, 2008

Simulated annealing (sa) for baroque numbers--a warm up

The idea of applying the simulated annealing method to baroque numbers was with me for a long time. Finally I had invited others on pl.sci.matematyka (on 2007-05-19) to implement it in parallel with me (independently). I wanted to have some company, it'd be interesting. Somehow, after some positive (and negative) feedback, I ended up alone with a first version 2007-July. It was able to repeat the results obtained in 1990-ies. It couldn't do more because I used a 32-bit C++, and I have represented prime powers directly as actual integers, thus limiting them to the range pe <>32 (I even stayed lazily withing pe ≤ 231). Then I barely started to work on a more advanced version 2007-Aug before I already had to stop (for reasons not realated directly to the project). Now, (starting near the end of 2008-August but really this September, I hope) I am trying to psyche myself up for another round. This time I am going to remove the said limitation, and I'd like to actually discover new baroque numbers, not known before.

First let me present here a very naive approach, just for the illustration (I would never actually code it; you may program this way only if you enjoy programming for its own sake). Select a natural number topNum, say topNum := 10000 and an array of primes, say:

P := (2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79}

Your space of "vertices" V consists now of natural numbers n, 1 < 28 =" 22⋅7 is one of them. You want to find baroque numbers, which belong to V. For instance, 28 is one of them; indeed, the sum of divisors of 28 is:

sd(28) = 1+2+4+7+14+28 = 2⋅28


hence brq(28) = 2, which means that 28 is a perfect number.

Now define the penalty function pen(n) as the number of primes p ε P such that there exists natural exponent e for which pe is a divisor of n but not of sd(n). Observe thatg n is baroque if and only if pen(n) = 0. Thus now we may say that our goal is to find many (preferably all) n ε V for which pen(n) = 0.

The algorithm may start with vertex v(0) := 43 (or any other prime from P). Let's assume that the algorithm has already reached vertex v(n). Selecting the next vertex, v(n+1), involves two stages: we select a candidate, then the candidate is accepted with probability prob(n), or rejected. If it is rejected, then we select another candidate, which is going to be accepted as v(n+1), with the same probability prob(n), or rejected, etc., until certain v(n+1) gets finally accepted.

In order to select v(n+1), the algorithm selects randomly a prime p ε P. The product v(n)⋅p is the first candidate for v(n+1). Then it checks condition v(n)⋅p ≤ topNum. If it is satisfied, then it checks penalty: if pen(v(n)⋅p) < pen(n); then v(n+1) := v(n)⋅p is accepted as the next vertex. If the penalty didn't decrease then we still allow a prob(n) := 1/(1 + 10⋅log(1+n)) chance that v(n)⋅p is accepted. If it is rejected, for one reason or another, but p is a divisor of n then v(n+1) := v(n)/n is tried, i.e. the algorithm checks pen(v(n+1)). If v(n+1) := v(n)/n t is accepted then the task of finding the next vertex is accomplished (and algorithm will look for v(n+2)). Otherwise a new prime p ε P is randomly selected and the described candidate process is repeated, etc, until finally a new v(n+1) gets accepted.

The describes algorithm can be discussed, modified, refined but my goal was just to provide an idea how a simulated annealing might work for baroque numbers. Among the shortcomings of the described version is the necessity of representing v(n) actually and directly (naively) as an integer. This either limits the program to a small range of numbers or forces us to use a multi-precision software library--indeed, baroque numbers ten to be huge. In the next posts I'll describe a bit less naive approach.

Remark Above, I have proposed

prob(n) := 1/(1 + 10⋅log(1+n))

One may also try one of the many other possibilities, e.g.

prob(n) := 10/(10 + n1/4)

Simulated annealing algorithm

The goal is to obtain optimal or nearly optimal solutions for a given problem. Thus first of all we need to define a finite set V of vertices, which correspond to the solutions of the problem, and a non-negative real function, called penalty,

pen : V → R,

for which we would like to find a vertex v ε V such that the value pen(v) is minimal or nearly minimal, so that such optimal v will serve as a solution. This abstract statement sounds simple but in applications the vertices may represent complex configurations or situations.

Some pairs of the vertices are connected by directed edges, so that together, the vertices and the edges, they form a directed graf G := (V E), where E is the set of all edges. Edges are just one-way roads which allow us to travel directly from one vertex to another. An edge leading from vertex v to vertex w is also called (in simulated annealing) a move from v to w. Simulated annealing is applied only to connected graphs, meaning that one can reach any vertex from any other via a finite sequence of consecutive edges (moves).

It is up to the designer of the algorithm to define the graph G = (V E) and the penalty function pen : V → R. One may do it well or one may do it poorly. It's an art. The same goes for the selection of other elements of the algorithm.

In addition, we consider also a real parameter T ≥ 0, called temperature, or rather a decreasing sequence of temperatures T(0) ≥ T(1) ≥ ... ≥ 0, which approach (or even attains) the limit value 0.

The algorithm, i.e. the search for the optimal vertex, works as follows: we start a travel over graph G at a high initial temperature T(0) and in an initial vertex v(0). Let's assume that we are already in vertex v(n) at temperature T(n). Now algorithm selects randomly a candidate for a move from vertex v(n). Let v(n+1) be the destination of the candidate move. If the penalty has decreased, pen(v(n+1)) then v(n+1) is accepted. If not then it is accepted with the probability prob(n) which approaches zero together with the temperature. If the candidate is rejected then another candidate v(n+1) is selected, and the same acceptance procedure applies to it; and so on, until a candidate is accepted.

Remark 1 In addition to simulated annealing algorithm there are also other optimizing algorithms which serve similar purpose. One of them is the so-called genetic algorithm, which is like simulated annealing but richer: besides moves it has also procreation, where one gets a new vertex out of a pair of two previous ones. This provides more possibilities (while it is harder now to provide a scientific foundation as solid as in the case of simulated annealing).

Remark 2 The algorithm may look just for one solution. Then after finding it, it may stop. Or it may look for many solutions. Then after finding a consecutive solution it restarts itself.

Sunday, August 31, 2008

Baroque conjectures

Let me address the views (guesses) on the four questions, about the perfect and baroque numbers, listed in the previous post:
  • everybody believes that there are infinitely many (even) perfect numbers, because everybody believes that there are infinitely many Mersenne prime numbers p (i.e. prime numbers p such that 2p-1 is a prime too);

  • it seems to me that some (many? most?) specialists believe that there are only finitely many baroque numbers which are not perfect; some even think that all baroque non-perfect numbers are already known (no way!). Myself, I believe that there are infinitely many of them but finitely many for each baroqueness coefficient;

  • nobody believes that there is any odd perfect number;

  • I think that nobody believes that there is any odd baroque number; I don't either but I am not so sure :-).
I am interested in the race toward finding more baroque numbers.

Saturday, August 30, 2008

Back to baroque numbers?

The classical, standard name for my term baroque numbers is pluperfect or polyperfect
numbers or similar. A natural number n (n = 1 2 ...) is called baroque when the sum sd(n) of all natural divisors of n is divisible by n; let's call

brq(n) := sd(n)/n

the baroqueness of n. When a baroqueness of a number is two, brq(n) = 2, then it is called perfect. The smallest perfect number, known since the ancient times, is n=6. Indeed, in this case

sd(n) = 1+2+3+4+6 = 12 = 2*n

Questions about the baroque numbers are among the oldest, open (unresolved) problems of the whole mathematics. They are difficult and, today, somewhat isolated from the main developments, hence they are not as popular among the best mathematicians as they used to be in the past, when Euclid, Fermat, Decart, Euler and others were interested in them. Let me list the main open questions:
  • are there infinitely many perfect numbers?
  • are there infinitely many baroque numbers?
  • does there exist an odd perfect number?
  • does there exist an odd baroque number > 1?
Of course n=1 is the only number for which brq(n) = 1.

The Euclid-Euler tandem (:-) proved that an even natural number n is perfect if and only if there exists a (unique) natural number p such that the following two conditions hold:
  • 2p - 1 is prime;
  • n = 2p-1*(2p-1)
It is well known and easy to see that when 2p-1 is prime then so must be the exponent p itself.

Another old result (an ancient observation) is that brq(120) = 3, i.e. 120 is a baroque number, and its baroqueness is 3.

Sunday, July 20, 2008

Everyday language

The common goal of a conversation is to get to the point, without an unnecessary worrying about the precision in relation to the side issues, which are mentioned only casually. Possibly, the side items were mentioned without even meaning them as something to be dwelt upon anymore. We are humans and not robots, hence we add occasionally this or that.

The lack of precision of the everyday language is its strength, but strengths and weaknesses tend to walk together. The everyday language will be abused easily when there is no good will on one or more of the conversing parties. And one of the ways is to zero on the side issues, when the other party have not even dreamed about actually discussing them and having their each word scrutinized in a hostile way.

For example, in the everyday language we often don't make it clear whether we talk about the total set or about the existence of just one member of a set, as in the phrase "young people tend to be careless" - are ALL young people assumed to have a tendency to be careless or just SOME of them? The speaker most likely didn't care about it at the time of saying it. But the precision police would give that speaker hard time. The surprised and shocked and frustrated by the attack speaker would possibly defend its pronouncement, would get trapped into new situations, and would be doomed. If you attack someone who didn't mean any battle, then the person will say things ad hoc, and you will prevail, and the communication will lose. You will always find something, you will always generate some "faults" in the other person, and you will feel so righteous.

Add to this some relaxed phrases, some light jokes, an occasional not politically correct wording, and the person allowing itself of such a luxury will be doomed, there will be so much material against the unsuspecting soul. The winner prevails, but how intellectually and emotionally poorer is the winner's life! And how meager are such "victories"!

Interpersonal (mis)communication, public and private

There is so much of miscommunication. A lot of it because people simply don't like one another, in which case the truth does not matter. There are also power games, ego games, psychological insecurities, etc., both in public and in personal exchanges. The difference of experience, of knowledge, of understanding, of class, between the participants also play a big role. Even when two people care about each other, the insecurities, the games, and similar, may still spoil the communication.

In adversary exchanges there is no point to even worry about such things. One should and often does address the public and not the adversary. Most of the time there is no chance to affect the adversary. For these reasons I have developed a flexible, neutral format for Internet discussion groups (it's an application of my Art of Agreement), but that is a topic for another thread.

Below, I'll provide an example of a (fictitious but realistic) conversation which went down the drain.

***

A. and D. talk about the treatment by different computer languages of the upper/lower case in the names of variables and similar. First languages had upper case only (e.g. Fortran). A. and D. remember that other old languages allowed for the either case; the lower and the upper case of any letter was treated as equivalent. Thus Mary mary MARY maRy mARy etc. would all stand for the same variable. This feature was widely used by programmers to enhance the readability of their programs. In particular A. was fond of the especially consistent and useful way this was done at the company for which A. had worked years ago.

Then D. mentions that a new option is offered by the wiki engine. According to this convenient in the wiki contest convention, wiki is sensitive to the case of all letters in the path except for the very first letter: you may write Albert_Einstein or albert_Einstein, and it will amount to the same link, but Albert_einstein and ALbert_Einstein will be different (and most likely each will be just a mistake).

D. knows A., hence he said carefully wiki engine. There are several wiki and wiki-like engines, while there is only one default wiki engine, the one that powers the English wikipedia (and several other wikipedias and similar portals, while there are also wiki portals which use different engines). All these things both A. and D. know well over the years of being somewhat interested in the topic (and D. being even active in some wiki portals; and each of them knows that the other one knows). D. was careful to say wiki engine, while it would be an exaggeration to spent more words on this precision. Nevertheless A. objects that not all wikis are alike, and asks: how do you know that all wikis are like this? D. answered that he knows only about three of them, including the English wikipedia. The conversation is ridiculously going along this line, with A. accusing D. of being a liar! According to A., the other person claimed in the beginning that ALL wikis are supporting the mixed convention. D. knows very well that it was not the case, of course not. So D., irritated, responds that it is A. who is the "liar". In a sense, D. even believes that this is the case – that A. is manipulating the conversation instead of allowing the pleasure of joint exchanges of knowledge and reminiscences.

Super! :-) Now, what is the mechanism of such disasters? It seems that A. has the need of being right, and being the only one who is right. Thus others have to be wrong. The conversations for A. are trials where he is the prosecutor, the investigation officer, the judge and the jury. While D. naively treats the conversation like it were about the upper/lower case option, it turns out that the conversation is about D., that D. has to defend in true or imaginary detail each of D.'s casual pronouncements -- surprise, surprise! A. believes in being always right, that others are sloppy, illogical and stupid. A. is sane enough and has the necessary self knowledge about A. not being an Einstein, that A. has not won a Noble prize nor the wealth of Bill Gates. Thus to have its self-respect A. needs to put others down. A. will go so far (and with a strong conviction! -- ridiculous as it sounds) as to call others liars, where it is A.'s inability to listen and to stick to the topic. One may, like A., have difficulties to concentrate and catch all the fine points but then one should allow for the margin of not getting them, and of not understanding everything all the time. A good conversation requires patience and trust. And first of all, a conversation should not be a trial on which one puts the other person, who never got any court invoice. When a conversation is strictly about a computer language option of upper/lower case , with neither partner having any material interest in the topic (just intellectual curiosity), A. has no right to switch to an investigation of the D.'s personality qualities (say, to true or imagined D's inability of expressing things precisely) -- that's absolutely wrong.

The basis for such disasters is psychological, but there is also a tool (a method), which A. uses with a practiced agility to achieve such spectacular negative effects. The A.'s method is grounded in the common usage of the everyday language (as opposed to scientific language). See the next post.