WO2009022024A1 - Sistema electrónico de emulación de la cadena de la estructura de 'adn' de un cromosoma - Google Patents

Sistema electrónico de emulación de la cadena de la estructura de 'adn' de un cromosoma Download PDF

Info

Publication number
WO2009022024A1
WO2009022024A1 PCT/ES2007/000478 ES2007000478W WO2009022024A1 WO 2009022024 A1 WO2009022024 A1 WO 2009022024A1 ES 2007000478 W ES2007000478 W ES 2007000478W WO 2009022024 A1 WO2009022024 A1 WO 2009022024A1
Authority
WO
WIPO (PCT)
Prior art keywords
dna
chain
chromosome
emulation
electronic system
Prior art date
Application number
PCT/ES2007/000478
Other languages
English (en)
French (fr)
Inventor
Jose Daniel Llopis Llopis
Carlos Llopis Llopis
Silvia Llopis Llopis
Original Assignee
Jose Daniel Llopis Llopis
Carlos Llopis Llopis
Silvia Llopis Llopis
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Jose Daniel Llopis Llopis, Carlos Llopis Llopis, Silvia Llopis Llopis filed Critical Jose Daniel Llopis Llopis
Priority to PCT/ES2007/000478 priority Critical patent/WO2009022024A1/es
Priority to JP2010518700A priority patent/JP2010535370A/ja
Priority to CN2007801009069A priority patent/CN102084380A/zh
Priority to EP07822886A priority patent/EP2180434A4/en
Priority to US11/992,057 priority patent/US20100268520A1/en
Priority to IL194065A priority patent/IL194065A0/en
Publication of WO2009022024A1 publication Critical patent/WO2009022024A1/es

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/12Computing arrangements based on biological models using genetic models
    • G06N3/126Evolutionary algorithms, e.g. genetic algorithms or genetic programming
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B82NANOTECHNOLOGY
    • B82YSPECIFIC USES OR APPLICATIONS OF NANOSTRUCTURES; MEASUREMENT OR ANALYSIS OF NANOSTRUCTURES; MANUFACTURE OR TREATMENT OF NANOSTRUCTURES
    • B82Y10/00Nanotechnology for information processing, storage or transmission, e.g. quantum computing or single electron logic
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0009RRAM elements whose operation depends upon chemical change
    • G11C13/0014RRAM elements whose operation depends upon chemical change comprising cells based on organic memory material
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0009RRAM elements whose operation depends upon chemical change
    • G11C13/0014RRAM elements whose operation depends upon chemical change comprising cells based on organic memory material
    • G11C13/0019RRAM elements whose operation depends upon chemical change comprising cells based on organic memory material comprising bio-molecules

Definitions

  • the invention at hand, as expressed in the statement of this specification, is intended to provide an electronic system of emulation of the "DNA” structure chain, to enable, to solve computation problems with "DNA”, that in the case of the invention, it is inorganic "DNA” since it is materialized by electronic circuits and not by organic “DNA”, as is conventionally done, and thus take advantage of the characteristics of the organic nature of the "DNA” from of an inorganic "DNA”.
  • the invention consists of a hardware system that provides an electronic structure of the "DNA” that allows solving problems of trajectories, networks and flows, which are used in the trajectory calculations of the "GPS” (Global Positioning System) systems, calculation of routes in land, sea or air navigators, and also in industrial control problems in production processes or optimization of industrial workflows.
  • GPS Global Positioning System
  • the invention is applicable in solving any problem that can be represented by graphs that are associated with the ⁇ DNA structure chain ", as will be described later.
  • NP-Complete complexity which are problems of NP complexity that have a difficult solution in polynomial times, with a non-deterministic machine.
  • Dijkstra supported his research in computer science, the result of which was Dijkstra's algorithm. This algorithm is based on the determination of the shortest path, given a vertex origin in a directed graph and with positive weights on the edges. The idea is to explore all the shortest paths that start from the origin vertex and, which reach all other vertices. Once the shortest path from the origin vertex has been determined, to the rest of the vertices that make up the graph, the algorithm stops.
  • the system of the invention has the great advantage that it allows its reuse, since the user can use it as many times as desired, since it is materialized by electronic circuits.
  • the invention has developed a new system that achieves obtaining an inorganic "DNA".
  • chromosomes which are formed by "DNA” and proteins.
  • the "DNA” is composed of two longitudinal fibers joined by a centromere. These fibers are called chromatids and represent two identical strands of the duplicated "DNA”.
  • DNA is composed of strands or chains of nucleotides, which differ in four types that are numbered below:
  • Adenine is represented by the letter A.
  • Guanina is represented by the letter G.
  • Citosina is represented by the letter C.
  • Timina is represented by the letter T.
  • the "DNA” is composed of two linked strands and each strand contains innumerable nucleotides. In the same strand there are no complementary nucleotides, that is, they can be bound without restriction. However, when linking the two strands, there are Complementarity restrictions, so that an Adenine (A) of a strand can only be joined with the Thymine (T) of the complementary strand, in the same way the Guanines (G) can only be joined with the cytosines (C) .
  • the system of the invention is characterized in that it comprises binary coding means of the different four types of nucleotides that make up the strands, so that the nucleotides that form complementary bonds are assigned complementary codes by reversing one of them.
  • the invention includes storage units of a nucleotide code and a code selected from its complementary code or no code; all this to obtain a nucleotide and its complement or only a nucleotide, said serial storage units being connected to form the nucleotide chain that constitute each strand of a "DNA” chain. Therefore, by means of the aforementioned coding, which is stored in the storage units, an electronic structure is obtained which allows access to a nucleotide and / or its complement, to a strand and to the two strands of the "DNA” chain. "as required, by means of known electronic circuits that make the selection of the different storage units according to the desired requirements.
  • the invention provides different modules that are constituted by groupings of storage units, in which a "DNA” chain is stored in each module, the modules being connected in rows and columns, so that each chain of " DNA “by selecting rows or columns.
  • the first application of the invention consists in its use as a "DNA" data bank.
  • the code assigned to each nucleotide comprises two bits and its storage depends on the inputs applied to each storage unit by electronic means, so that each storage unit can be encoded according to the desired nucleotide and its complement.
  • the invention provides for the incorporation of number 4 coding means based on four nucleotides of a chromosome (A, G, C and T). It also provides that the two bits corresponding to each nucleotide acquire the decimal amounts from 0 to 3 so that a plurality of numerical presentations determined by the position of the two bits and the value it receives in each position is allowed.
  • This coding allows any coding system that has correspondence with the decimal or binary, can be encoded with the numbering and coding system of the invention.
  • the commented coding allows the invention to incorporate means for carrying out operations such as additions, subtractions, multiplications and / or divisions, as well as encoding any fixed or floating point number of single and double precision using complement coding Al and complement A2.
  • the storage units of the invention can be volatile, but in this case the invention is called InCroSil Access Memory (IAM), and it can also be non-volatile read-only memories that the invention calls InCrosil Read OnIy Memory (IROM).
  • IAM InCroSil Access Memory
  • IROM InCrosil Read OnIy Memory
  • the invention incorporates structured access means to the modules and storage units by locating a "DNA" chain, then locating a strand and then by designating a nucleotic or group of nucleotides, so that all the chain or part of it. Therefore, by means of the modules and storage units of the invention it is not accessed by rows or columns as it happens in conventional memories, but allows three different accesses, as it has been commented, so that access from
  • a "DNA” chain can be considered as a row or as a column, that is, the system that manages the IAM memory, can stipulate how the "DNA” chains would be stored. "in memory, either by rows or by columns.
  • the invention can incorporate means for coding in the storage units, which form threads, representations of problems by means of graphs comprising elements constituted by vertices and edges and optionally can incorporate the weight or direction of the edge, so that the system of the invention encodes a strand in a first set that contains vertices and edges and does not contain their weight, corresponding to initial elements and those corresponding to elements that do not contain final elements; it being provided that in the complementary strand a second set containing elements of the graph consisting of vertices and edges corresponding to the final elements and those corresponding to the elements that do not contain final elements is encoded.
  • Each of the storage units of both strands are linked together by means of comparators that form a matrix so that the processing of both strands is carried out in parallel as well as comparisons between all the elements of both sets which allows solving problems that can represented by graphs
  • the comparators form a matrix and are connected to a buffer to which polynomial order path recovery means are applied to determine the most optimal route between two points in the graph.
  • the edges of the graphs can have weight or direction, in which case the invention comprises additional means for storing the weight of an edge, as well as means for adding the weights of each edge and obtaining the total weights of each edge, having provided that it also incorporates means of ordering the total weights of each edge according to previously established criteria, which allows solving problems of algorithms known as Dijkstra, Floyd-Warshall and Bellman-Ford, Ford-Fulkenson.
  • the structure described allows its application in flow problems such as vehicle fleets, optimization of industrial processes, workflows, coupling programs and communications networks, for which these problems are represented as a graph.
  • the information and instruction of the machinery of an industrial plant can be represented as a graph to solve the problem posed.
  • the invention also provides for coding the problem of the Hamiltonian path in the storage memory units that constitute the threads, in one of which the complete graph is encoded and in the complementary ones the complete graph with known restrictions.
  • the strands are connected to comparators forming a matrix to compare the edges of both graphs two to two in parallel to indicate if the bits of the result of each comparison are all equal and refer to the same edge and consequently it belongs to both graphs.
  • Means are applied to the result of the comparison to create levels of the wallace tree indicative of whether the Arista is a path or it is not, so that the problem of the Hamiltonian path is solved.
  • the comparators that compare the edges of both graphs two to two are constituted by logical semi-summers without hauling, whose output is connected to a logic gate of detection of a single bit of the result of the comparison, to obtain a single data, as noted, and which indicates whether the bits of the result of each comparison belong to both graphs of the coded sets.
  • the means for creating levels of the wallace tree comprise first logical gates for each column of the comparator matrix that represents the complete graph and are connected to the comparator outputs to confirm the belonging of said edge to the set of edges of the graph with restrictions in a way that indicates whether or not it is a path.
  • the outputs of the first logic gates are connected to a second logic gate to detect if all edges are path, so that the invention determines the Hamiltonian path. It also incorporates storage media for the result obtained.
  • the invention also provides for the possibility of taking into account the weight of the edges, for which it comprises means to receive the paths found and establish the correspondence between weight and edge and obtain the weights of each path.
  • it also includes means of ordering the weights of the roads according to previously established criteria for choosing the best road.
  • the system when the vertices are coded and, therefore, the value of the edges that join them is established, the system stores in that memory address, the value of the weight of that edge in the graph.
  • the value of the edges is sought in memory, since its address is known, its value is known, that is, a reference to memory is encoded, as is its address and not the edge value.
  • the weights obtained are added to obtain the totals of each road that are stored in memories with consecutive addresses and by means of ordering the weights of the roads according to previously established criteria, the best path is chosen.
  • This configuration also allows the application of the invention to solve Hamiltonian cycle problems by means of an indicative coding that the output vertex of the graph is equal to the destination vertex.
  • the invention incorporates means to encode a graph so that the vertices represent the edges and vice versa and thus obtain what sequence of vertices must be followed to pass through all the edges and allow solving the problem of the Eulerian path.
  • the application of the invention is allowed to solve Eulerian cycles.
  • the invention also makes it possible to establish the coding of the weight of the edges in the resolution of Eulerian roads or Eulerian cycles, so as to allow new problems of optimization of the Eulerian roads.
  • Figure 1. Shows a representation of the organic "DNA” chain.
  • Figure 2. Shows the different types of "DNA” chain structures and the bonds between nucleotides.
  • Figure 3. It shows a possible example of carrying out an implementation of a storage unit of a nucleotide and its complement.
  • Figure 4.- Shows a table of the correspondence between different numbering systems compared to the base 4 coding of the invention.
  • Figure 5. Shows a table corresponding to the two nucleotide addition operation according to the coding of the invention.
  • Figure 6. Shows a table equivalent to the previous figure, but for the subtraction.
  • Figure 7. Shows a representation of a possible example of subtraction.
  • Figure 8.- Shows a table equivalent to figures 5 and 6, but for multiplication.
  • Figure 9. Shows a possible example of a multiplication.
  • Figure 10. Shows a table of representation of floating point in simple precision according to the coding of the invention.
  • Figure 11. Shows a table of different combinations of the exponent (as fixed, complement Al, A2 and excess 4 4 ).
  • Figure 12. Shows a double precision floating point representation table.
  • Figure 13.- Shows a schematic representation of the basic storage unit represented in figure 3.
  • Figure 14.- Shows a schematic representation equivalent to the previous figure, but according to a more detailed configuration.
  • Figure 15.- Shows a representation of the structure of a possible grouping of volatile and non-volatile memories represented in Figures 13 and 14.
  • Figure 16. Shows a representation of a possible example of a graph.
  • Figure 17. Shows a possible implementation for the calculation of roads.
  • Figure 18. Shows a representation of a directed and unweighted Hamiltonian graph.
  • Figure 19.- Shows a representation of the Hamiltonian road graph.
  • Figure 20. Shows an inorganic "DNA" chain of the invention referring to a possible grouping of edges and vertices to solve the problem of the Hamiltonian path.
  • Figure 21. Shows a coding of the vertices and edges according to the previous figure.
  • Figure 22 Shows a detailed coding of the vertices and edges of the previous figure.
  • Figure 23 Shows the set of inorganic "DNA” chains of the invention with all possible solutions of the path.
  • Figure 24. Shows the representation of a logical semi-consumer that is applied in the system of the invention.
  • Figure 25. Shows a representation of a possible implementation to make the comparison of edges in parallel edges for the resolution of the Hamiltonian problem.
  • Figure 26 Shows a functional block diagram of the implementation of the invention for the resolution of Hamiltonian problems.
  • FIG. 27 Shows the complete circuit for the Hamiltonian road solution.
  • Figure 28.- Shows a functional block diagram of a first implementation for the resolution of the Problems of the weighted Hamiltonian path.
  • Figure 29 Shows a functional block diagram of a second implementation for the solution of the weighted Hamiltonian road problem. DESCRIPTION OF THE FAVORITE PERFORMANCE FORTS XtAg
  • a chromosome is made up of “DNA” and proteins.
  • the "DNA” is composed of strands or chains of nucleotides, which differ in four types: Adenine (A),
  • G Guanine (G), Cytosine (C) and Thymine (T).
  • the "DNA” is composed of two linked strands and each strand contains innumerable nucleotides. In the same strand there are no complementary nucleotides, that is, they can be bound without restriction.
  • A Adenine
  • T Thymine
  • G Guanines
  • C Cytosines Due to this organization of the strands, the DNA coding cannot be random and must have a previously defined structure (see figure 1).
  • Adenine (A) is assigned the value of "00".
  • Thymine (T) is assigned the value of "11".
  • the length of the strand will depend on the number of circuits placed in the form of a stack, thus creating a three-dimensional chip, which will allow the emulation of the organic structure (chromosome). It can also be done at the planar level, the choice of one technology or another, would depend on the existing resources and the final needs of the project.
  • nucleotides in a circuit become two and, in addition, they are dynamic, that is, depending on certain inputs a certain type of nucleotide is obtained.
  • This reduction makes better use of the resources of the circuit, since it is passed from a four-part circuit to a two-circuit. All this simplification will not affect the structure of the nucleotide, since it will continue to be composed of two flip-flops or equivalent electronic components, although the value stored in them will depend on the inputs applied, since they must be dynamic.
  • Figure 3 shows an example of implementation that conforms to the previously mentioned description and in which a storage unit 1 is materialized by four flip-flops 2 of type D, so that the upper two are provided for the coding of a nucleotide and the lower two for the coding of its complementary.
  • a storage unit 1 is materialized by four flip-flops 2 of type D, so that the upper two are provided for the coding of a nucleotide and the lower two for the coding of its complementary.
  • the SELO signal of Figure 3 will be activated, thus the input / output (I / O) signal allows us set the value you want the flip-flops 2 of the nucleotide above to store.
  • the SELl signal in Figure 3 will be activated and, in the same way, the signal (I / O) will allow the value of the flip-flops of the nucleotide below.
  • the SELO and SELl signals will be activated and by means of the signals (I / O) the value of one of the nucleotides is established, while the other nucleotide will be activated with the use of XOR doors.
  • the logic gates of the storage unit 1 allow to encode the links within the circuit itself, as well as establish that it is desired to store a nucleotide or obtain its value by means of the write / read signal
  • the base 4 numbering system of the invention uses as a symbol the nucleotides of a strand of "DNA" A, G, C and T.
  • the coding of the organic "DNA” is known macroscopically, either by means of the coding of a thread or portion, or also coding the operations with its operands. These encodings do not allow so much flexibility, because they limit the number of combinations that can be made. For this reason the invention consists of a numbering system where the DNA is encoded microscopically, that is, at the nucleotide level that forms the DNA strand. This atomicity characteristic allows combinations to be made to generate a numbering system that has a power and scalability, necessary for the representation of numerical quantities.
  • the encoding a nucleotide as a sequence of two bits, which acquire the decimal amounts from 0 to
  • n ° (X n-1 X 2 XiX 0 ) b X n -Ib " " 1 + + X 2 b 2 + X 1 b 1 + X 0 b °
  • AGAGTGGT 4 A- 4 7 + G- 4 6 + A- 4 5 + G- 4 4 + T- 4 3 + G- 4 2 + G- 4 1 +
  • the inverse operation of a decimal number to a Cod-JnChroSil encoding Assuming the number in decimal 189io, the number in Cod- JnChroSil is as follows:
  • N b [a n -ia n-2 a n . 3 ... a 3 a 2 ai a 0 , a. ⁇ a -2 a -3 ... a k ] b , where n + k indicates the number of digits in the figure, in turn n indicates the number of digits in the whole part, while k indicates the fractional part.
  • JnChroSil As is well known, the sum has different properties that characterize it and that will be applicable in the invention, these are; the commutative property, where the order of the operands does not alter the result, the associative property, the neutral element and, finally, the opposite element.
  • the guidelines for the sum of two nucleotides are given in Figure 5.
  • the next operation that is defined is the subtraction in Cod-JnChroSil encoding.
  • the subtraction is known as an arithmetic operation opposite to the sum, in the particular case of the invention the subtraction between two nucleotides is defined following the following guidelines in Figure 6.
  • Multiplication or product is defined as an arithmetic operation where successive sums are made. As in the previous operations, guidelines for nucleotide level multiplication are given, these products are shown in Figure 8.
  • the division is performed in the same way (it has the same mechanism) as in the decimal case, but unlike the decimal, subtractions and multiplications are performed by subtraction and multiplication operations respectively, which have been defined in this document. For example, suppose the following numbers in Cod-InChroSil; dividend is AGAACGA (in decimal is 1060), while the divisor is TGA (in decimal is 52). After performing the operation the division quotient is 20 in decimal (GGA in Cod-InChroSil) and, the rest, is also 20 in decimal
  • a floating point representation is a method of representing real numbers, where the peculiarity is the flotation or movement of the comma, element that separates the whole part of the decimal part (fractional) from a real number.
  • the system of representation in fixed comma, where in advance the number of digits that belong to the decimal part and which to the whole part is established.
  • These floating point representation systems allow numbering systems to represent large numerical quantities. This is the reason why this floating point format has been widely used for the representation of large numbers.
  • a clear example is in the area of computer science, which has used this type of representation, for the storage of very large numerical representations, which could then be manipulated mathematically.
  • r m • b e
  • r the real number
  • m the mantissa
  • b the base
  • e It is the exponent, which allows to raise the base.
  • the number 0.000123i 0 in fixed comma (we use the decimal system)
  • floating point could have the following representations: 1.23 10 "4 , 0.123 10 '3 , 0.0123 10 ⁇ 2 , 0.00123 10 " 1 , etc.
  • the next step is: How to establish the format to use this feature offered by the TnChroSil systems and, ultimately, the DNA ?, the answer is found in the following lines, where it is explained how a floating point representation format has been defined for numbers coded in Cod- JnChroSil.
  • the invention can define two major accuracies for floating point representations;
  • 20 nucleotides have been used to establish the simple precision format.
  • the 20 nucleotides are distributed or distributed in 6 sections or fields, which are described below; Two sections of the six are dedicated to establishing which of the two strands is used to represent or define the exponent and mantissa respectively. Each section has a length of one nucleotide, enough information to decide which part to choose. For example, if we find a representation where in a section before the exponent, nucleotide A appears, it indicates that the exponent that is needed is in the upper strand, on the contrary, if a nucleotide T is found, it indicates that the exponent is represented by the lower strand. With this set of positions you can make various combinations in the representation of the same number and greatly simplify possible mathematical operations. Within the floating point representation format there are two other sections that have the function of specifying the type of coding that the exponent and the representation are represented. mantissa Four types of coding can be considered for this format, which are those presented in the following enumeration.
  • Sign Magnitude (takes the value of A in the section): The format of representation of signed integers called Sign Magnitude, which mimics our manual writing of integers, on the one hand the sign and then the magnitude of the number. For example, the number - 34 i0 which in Cod-InChroSil is GAAC 4 , if it is considered that the negative sign is coded as C and, on the contrary the positive sign by A, therefore the number of our example is the next CGAAC.
  • N b Cal b n - N b / where N b Cal is the number in complement to one of the number N b
  • these sections specify the coding in which the element is (exponent or mantissa respectively), that is, if the previous nucleotide to the exponent or mantissa has for example the value of G, this indicates that the exponent or mantissa is encoded in complement Al.
  • the length of these sections is one nucleotide , as well as the sections that determined the thread to use.
  • the sign section is referred to with a length of one nucleotide and, which allows to know the sign of the number that is represented, that is, if in this section you have nucleotide A, it means that the number is positive, on the contrary if you have nucleotide T the number is negative.
  • the section of the exponent which has a length of 4 nucleotides.
  • the section of the mantissa that with a length of 11 nucleotides completes the 20 nucleotides that form the representation format.
  • Thread 1 T AT CAGG AA AGCCCAAAAAA Thread 2: A TA GTCC TT TCGGGTT T TTT As you can see the number is negative, for that reason the first nucleotide has been coded as T, the following nucleotides indicate that the exponent is represented in the strand 1 and its coding is excess 128. With respect to the mantissa it is represented with a comma fixed unsigned and corresponds to thread 1.
  • the next floating point representation format is double precision, which used 40 nucleotides or two strands of 20 nucleotides.
  • the double precision representation format is the same as the simple one, with the proviso that the number of nucleotides in the exponent and mantissa sections is increased.
  • the double precision representation format for 40 nucleotides is shown graphically in Figure 12.
  • the storage unit 1 described can be of two types that the invention has called Mem-JnChroSil (Memory INorganic CHROmosome based in SILicon).
  • the invention can use volatile and non-volatile memories.
  • the volatile memory implemented has been referred to as JnChroSil Access Memory (IAM).
  • IAM JnChroSil Access Memory
  • This type of memories besides having the characteristic of being volatile, has the property of structured access, in this way we access a nucleotide, through the previous location of the strand, to later designate the nucleotide.
  • the volatile memory of the invention allows the writing and reading of the information stored therein. This memory is volatile, that is, if it is disconnected from electric power, the information is lost.
  • this type of temporary memory is usually used to store intermediate results or, data that is not permanent.
  • the access designed for this type of memory is structured, that is, if you want to obtain data from this memory, the functionality is as follows; an inorganic DNA chain (or also called JnChroSil) is chosen from memory. Once the inorganic DNA chain is determined, it is chosen that the strand, which contains the information we are looking for, indicates that the inorganic DNA chains that It has been developed for memories, they are composed of two strands, just like their organic counterparts.
  • AMI is differentiated by the genetic character it has, because inorganic materials can store information from organic DNA. Therefore, the existing volatile memories or RAM, in addition to being different by the type of access, are also different by the basic storage unit, the bits or groups of bits for the case of 1 S RAM and, the nucleotides or nucleotide groups for the case of our IAM memory.
  • These memories can be integrated into current systems or devices that demand memory, for the simple reason that they can be manufactured with semiconductors and integrated into a circuit using micro-technology or nano-technology. Because of this, these memories can also be grouped into modules 21 with different connectors. These connectors vary with respect to the electronic devices or boards where the memories were connected.
  • the memory system is formed by chains of inorganic DNA 12, which in turn are formed by two strands, one main and the other complementary. These memory threads are divided into nucleotides, which represent the basic storage units 1 of these memories.
  • AMI Advanced Technology Attachment Memory
  • IROM JnChroSil Read OnIy Memory
  • Nonvolatile memories have the peculiarity that they are memories that are only read.
  • the IROM memories or read-only memories with JnChroSil as well as the IAM memories explained above have the same structuring as in Figure 15 and also the same access structure explained above for the IAM memories, a factor that also differs from the ROM or non-volatile memories currently available.
  • this memory has the property that its information is read only, therefore it can be implemented by fuses or other system that would allow us to create static information, so that when a nucleotide will be burned or created in this system, the reverse method, which has been described in the previous section, allows the complementary nucleotide to be burned or created, in this way, we would follow an operation indicated in figure 14.
  • reference 5 represents the primary information
  • reference 6 the inversion of said primary information
  • reference 7 the secondary information obtained
  • reference 8 the controls applied to achieve proper operation.
  • Routing problems are usually solved by deterministic algorithms (reasonable time) and, using software, instead of hardware.
  • This makes the systems opt for devices that make predictive models, not real, about a possible approximate solution, that is, there is no device on the market that can tell a beverage distributor, for example, which is the way which would happen only once for each bar or restaurant in a city and, optimally.
  • This problem is irresolvable with the devices that currently exist, route software, routing, etc.
  • it could be resolved, for the beverage company and the distributor itself it would be a profit and time saving respectively.
  • Another example is the detection of breakdowns or anomalies, by the gas, electricity, water and telephone companies.
  • any system that can be reduced or schematized to a representation in the form of a graph techniques and methodologies can be applied to solve problems in this field, in addition if it is considered that with the coding of the graph in DNA and with the use of technology JnChroSil, can solve in an optimal way, problems that previously could not be solved, in addition to having a device that can be integrated in current systems and, its reuse is total, as discussed in previous sections.
  • a typical problem of graph theory is to find the shortest or best route from an initial point to an end point.
  • the presented approach to this problem is to consider • a directed graph, weighted (positive or negative) and use the features of DNA, using InChroSil technology. In this way, using a device based on JnChroSil technology, the shortest or optimal path can be found. Let's take an example, suppose you want to solve the problem in Figure 16 through adjacency lists and set theory.
  • the data structure, adjacency list is defined as a structure that allows each vertex i of the graph to be associated with a list containing all those vertices j, which are adjacent to it. In this way, space is saved in its representation and, in addition to the graph, it can be represented by a vector of n components (if
  • n), where each component is going to be an adjacency list corresponding to each one of the vertices of the graph.
  • each item in the list consists of a field indicating the adjacent vertex.
  • a second field will have to be added to show the value of the label.
  • Elementol ⁇ (s, xl, u) ⁇
  • Element2 ⁇ (s, x2, v) ⁇
  • Element6 ⁇ (w, x6, t) ⁇
  • Element7 ⁇ (v, x5, t) ⁇
  • Elementol ⁇ (s, xl, u) ⁇ [does not react] premise 4
  • Element2 ⁇ (s, x2, v) ⁇ [does not react] premise 4
  • Element3 ⁇ (u, x3, w) ⁇
  • Element4 ⁇ (u, x7, v ) ⁇
  • Element5 ⁇ (w, x4, v) ⁇
  • Element7 ⁇ (v, x5, t) ⁇
  • Elements ⁇ (s, xl, u, x3, w) ⁇
  • Element9 ⁇ (s , xl, u, x7, v) ⁇
  • Elements can react with Element ⁇ to form Elementol2, finally, Element9 reacts with Element7 forming Elementol3. In this round the set would remain.
  • Element2 ⁇ (s, x2, v) ⁇ [does not react] premise 4
  • Element3 ⁇ (u, x3, w) ⁇
  • Element ⁇ ⁇ (s, xl, u, x3, w) ⁇
  • Element9 ⁇ (s, xl, u, x7, v) ⁇
  • Elementolo ⁇ (s, x2, v, x5, t) ⁇
  • Elementoll ⁇ (s, xl, u, x3, w, x4, v) ⁇
  • Elementol2 ⁇ (s, xl, u, x3, w, x6, t) ⁇
  • Elementol3 ⁇ (s, xl, u, x7, v, x5, t) ⁇
  • Elementol3 ⁇ (s, xl, u, x7, v, x5, t) ⁇
  • Elementol4 ⁇ (s, xl, u, x3, w, x4, v, x5, t) ⁇
  • the reaction and the values that it can take are 0 or 1.
  • a new element is no longer created that must react, but they react all at once and it is indicated in a matrix, with a 1 if there has been a reaction or the reaction is positive and, on the contrary with a zero if there was no reaction or the reaction has been negative.
  • weights would be stored in a memory (Mera-InChroSil or other type of memory), therefore, the edges of the previous graph contain the address and not the weight value, the reason is that they can be Use large quantities for weights and directions have a certain length.
  • the terms can be sorted according to an ordering criterion, all this can be done through circuitry or software modules, which would be connected to the device. This circuit solves the problems raised in the algorithms of Dijkstra, Floyd-Warshall and Bellman-Ford, Ford-Fulkenson, being able to consider negative costs, etc.
  • the first step is the graph coding of Figure 19 for this the Cod-InChroSil coding (explained in this document) was used and it was established that each city (vertex) had a certain number of nucleotides, for example, 20 nucleotides, and that the edges are composed of the same number, 20 nucleotides, which correspond to the last 10 nucleotides of a vertex or city of origin and the initial 10 nucleotides of the vertex or destination city. Therefore, using the InChroSil technology, a strand will be created in which all the edges represented in that graph will be housed.
  • Al represent the edges of the graph that unites the states (Ei), and in which EO, El are the states or cities of the problem posed.
  • Figure 21 Graphically it can be seen in Figure 21 how the states are connected by edges and in Figure 22 this coding is detailed using codinrosil.
  • a state is formed by 20 nucleotides and an edge is composed of the 10 final nucleotides of a state and the initial 10 nucleotides of the next state.
  • the next step is to have all the possible Hamiltonian paths available in a complete 7 vertices graph, so a set of 5040 DNA chains was created, of course with InChroSil technology, these strands will consist of 140 pairs of nucleotides (since there are 7 vertices and each of them must be represented by 20 pairs of nucleotides, a strand length of multiplication of 7 by 20 would be required).
  • this theory applied to this project allows comparing each edge of 1 CG 1 of figure 23 of a set of threads; representing all possible combinations of the states, - with each edge specified in graph 1 G 1 of figure 20, in a totally parallel manner, and thus determining whether said edge of graph 1 CG 'belongs or not to the set of edges encoded in graph 1 G ', therefore the edges of graph 1 G' become sets and in turn the edges of graph 'CG' become objects of which it is necessary to know for sure whether or not they belonged to set exposed by the programmer, that is, to graph 1 G ', since 1 CG 1 are templates of possible solutions.
  • the philosophy of logical semi-summers, summers without carry propagation (CSA) and Wallace trees was used.
  • comparators 12 are established by creating a matrix and comparing edges 13 and 14, two by two, of both graphs ( 1 G 1 and 1 CG 1 ) in parallel. But a new question arises, how to establish whether it is a path or not? To answer this question, the well-known Wallace trees were raised, although its structure was not used if its operating philosophy, which is to create different levels of requirement to be able to find in a totally parallel way the required result.
  • the traveling salesman problem TSP is one of the most famous and best studied problems in the field of computational optimization. Despite the apparent simplicity of its approach, the problem is one of the most difficult to solve, because it is considered NP-Complete complexity.
  • the invention solves the problem of the traveler with an electronic system (previous section), with a temporary cost of the polynomial order. In this system there is a weighted and directed graph, where all the existing Hamiltonian roads in the graph are obtained. Therefore, in the most favorable case, there was only one way, but in the opposite case or opposite pole, in the unfavorable case, that is, when you have a complete graph, we can have all the Hamiltonian roads.
  • reference 21 represents the circuit for obtaining the Hamiltonian path
  • 22 is the connection interface with interface 25 of a data processing module
  • 24 is a database
  • 26 is a calculation module of costs and management.
  • Reference 27 represents an external data demand device.
  • the intermediate data is stored in the database of the invention, ie the weights of the edges, etc. So it supports the calculations that are going to be performed or performed.
  • FIG. 29 Another implementation is shown in Figure 29, it is the use of memories 28 (Mein-JnChroSil or other type of memory), the idea is that when the JnChroSil vertices are encoded and, therefore, the value of the edges that the join, the system will store in that memory address (edge value), the value of the weight of that edge in the graph, that is, its value or weight is stored in the edge, but the memory address where its value is, because this value It can be a very large number and the addresses have a set size.
  • the Hamiltonian roads are determined, through circuit 21 above, the value of the edges is sought in memory 28, since as we know their address, we will know their value.
  • reference 22 represents the connection interface with an interface 25a of the data processing module 23a, reference 29 the management module, 31 a connection interface of the module 23a with an external data demand device 27.
  • the Eulerian roads are those roads that cross all the vertices of a graph passing once through each edge of the graph, being one of the fundamental conditions that returns to the initial or exit vertex, therefore, a Eulerian path is a cycle that It contains all the edges of a graph once.
  • Leonhard Euler himself in 1736 in a problem that has the name of the seven bridges of the city of Konigsberg. The problem is stated in the following way: Two islands in the Pregel River, in Kónigsberg, are joined together and with the mainland by seven bridges. Is it possible to take a walk starting with any one of the four parts of the mainland, crossing each of the bridges only once?
  • Euler approached the problem by representing each piece of land by a point and each bridge, by a line, joining the corresponding points. Then, the previous problem can be translated to the following question: can the representation be traversed without repeating the lines ?, Euler showed that it was not possible since the number of lines that affect each point is not even (necessary condition to enter and leave each point). Therefore, this problem raises questions such as the following; How can the cable of this electrical network be traversed without repeating sections of the network? How can this route be made, passing through specific streets?
  • the graph of Figure 18 can also be represented as follows, where V 1 is the set of vertices and, Ei is the set of edges.
  • the graph will have the form shown in Figure 18. Therefore, if the Hamiltonian path of the previous graph G 2 is obtained , it can be affirmed that there is a Eulerian solution or path G 1 . Also if the graph is considered to be weighted, the total cost of each of the roads can be calculated and, therefore, sorted by cost, although the Eulerian roads do not have weight, new optimization problems could arise in the Eulerian roads. In conclusion, if there is a Hamiltonian path in graph G 2 , it can be affirmed that there is a Eulerian path in graph G 1 .

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Theoretical Computer Science (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Nanotechnology (AREA)
  • Chemical & Material Sciences (AREA)
  • Mathematical Physics (AREA)
  • Evolutionary Computation (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Biomedical Technology (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Genetics & Genomics (AREA)
  • Crystallography & Structural Chemistry (AREA)
  • Physiology (AREA)
  • Spectroscopy & Molecular Physics (AREA)
  • Measuring Or Testing Involving Enzymes Or Micro-Organisms (AREA)

Abstract

Se caracteriza porque comprende medios de codificación binaria de los cuatro tipos de nucleótidos (A, G, C, T) que componen las hebras, de manera a los nucleótidos que forman enlaces complementarios se les asignan códigos complementarios; e incluye unidades de almacenamiento (1) de un código de un nucleótido y de su complementario, conectándose dichas unidades de almacenamiento en serie para formar la cadena - de nucleótidos que constituyen cada hebra de una cadena de 'ADN' y así obtener su estructura electrónica y permitir el acceso selectivo a un nucleótido, a una hebra y a las dos hebras que componen la cadena de 'ADN'. Se aplica en cualquier problema que puede ser representado mediante un grafo el cual se codifica en las unidades de almacenamiento (1), para permitir resolver problemas en el cálculo de trayectorias de forma paralela y en tiempo polinomial, que hoy en día son irresolubles.

Description

SISTEMA ELECTRÓNICO DE EMULACIÓN DE LA CADENA DE LA ESTRUCTURA DE "ADN" DE UN CROMOSOMA
OBJETO DE LA INVENCIÓN
La invención que nos ocupa, tal y como lo expresa el enunciado de esta memoria descriptiva, tiene por objeto proporcionar un sistema electrónico de emulación de la cadena de la estructura de "ADN", para permitir, resolver problemas de computación con "ADN" , que en el caso de la invención, es "ADN" inorgánico ya que se materializa mediante circuitos electrónicos y no mediante "ADN" orgánico, tal y como se realiza convencionalmente, y así aprovechar las características de la naturaleza orgánica del "ADN" a partir de un "ADN" inorgánico.
La invención consiste en un sistema hardware que proporciona una estructura electrónica del "ADN" que permite resolver problemas de trayectorias, redes y flujos, los cuales son utilizados en los cálculos de trayectorias de los sistemas "GPS" (Sistema de Posicionamiento Global) , cálculo de rutas en navegadores terrestres, marítimos o aéreos, y también en problemas de control industrial en procesos de producción u optimización de los flujos de trabajo industriales.
En general la invención es aplicable en la resolución de cualquier problema que pueda ser representado mediante grafos que se asocian a la cadena de la estructura de ΛΛADN" , tal y como será descrito más adelante .
ANTECEDENTES DE LA INVENCIÓN
La matemáticas y la computación se unen de la mano, en un área de la ciencia que es conocida como la teoría de grafos. Los grafos son colecciones de elementos que se denominan nodos o vértices, los cuales están unidos por aristas o arcos, que a su vez, estas aristas pueden tener dirección u orientación designada. Uno de los primeros pioneros dentro de este campo, fue Leonard Euler, quien en 1736 se planteó un problema que es conocido como el problema de los puentes de Kónigsberg, que era una ciudad prusiana que poseía siete puentes. Euler suscitó la cuestión, de si era posible recorrer toda la ciudad cruzando cada uno de los puentes, una y sólo una vez. En una representación esquemática de la ciudad se puede observar que los puentes unen cuatro porciones de tierra, por lo que la búsqueda de prueba y error, no conducen a ningún resultado, por ese motivo, si se puede representar este problema, mediante un grafo, se podrían aplicar técnicas, métodos y algoritmos de la teoría de grafos para encontrar la solución. A raíz de este problema se dio el primer paso hacia la teoría de grafos, la cual ha evolucionado a lo largo del tiempo y, donde existen numerosos grupos de investigación trabajando en áreas o campos de esta disciplina. Unos años más tarde, el matemático, físico, y astrónomo irlandés, William Rowan Hamilton planteó uno de los problemas más complejos que existen en la teoría de grafos, el problema de los caminos hamiltonianos o el problema del viajante que consiste en tener un camino o grafo en el que se visita cada vértice exactamente una vez . Este problema por su complej idad es considerado en computación como un problema NP-Completo. En este punto cabe señalar que los problemas matemáticos o de computación se clasifican por su complejidad en diferentes grupos:
Complejidad P, donde los problemas pueden ser resueltos en una máquina determinista en tiempo polinómico.
Complejidad NP, donde los problemas pueden ser resueltos por una máquina no determinista en tiempo polinómico.
Complejidad NP-Completo, que son problemas de complejidad NP que tienen difícil solución en tiempos polinomiales, con una máquina no determinista. También existen implementaciones paralelas para la solución del problema del camino hamiltoniano pero necesitan un gran volumen de recursos y comunicaciones entre los nodos conectados. Por ese motivo Adleman presentó una nueva alternativa para programar con "ADN" orgánico que presenta un masivo paralelismo en la realización de las operaciones y por tanto en la obtención de los resultados finales, pero con las limitaciones comentadas anteriormente. Diseño un sistema para resolver el problema del camino hamiltoniano con programación "ADN" orgánico y, por lo tanto demostró que se podían resolver problemas NP- Completos en un tiempo computacional cercano al polinomial. En este sentido puede citarse el documento de patente US7167847. Ya en el siglo XX, el científico Edsger Dijkstra, planteó unos nuevos sistemas para el cálculo de rutas, de modo que no sólo se establecía cómo se debía de llegar de un punto a otro, sino que también se establecía que fuera en el menor tiempo posible. Dijkstra apoyó sus investigaciones en las ciencias de la computación, fruto de ello fue el algoritmo de Dijkstra. Este algoritmo se fundamenta en la determinación del camino más corto, dado un vértice origen en un grafo dirigido y con pesos positivos en las aristas. La idea es ir explorando todos los caminos más cortos que parten del vértice origen y, que llegan a todos los demás vértices . Una vez determinado el camino más corto desde el vértice origen, al resto de vértices que componen el grafo, el algoritmo se detiene. Este algoritmo se basa en una estrategia, conocida como algoritmo voraz, que no funciona con grafos con aristas de coste negativo. Más tarde Robert W. Floyd, junto con Wharshall, modificaron el algoritmo de Dijkstra, aunque, las modificaciones eran relevantes, aún no podían ser aplicados en redes industriales o en el cálculo de rutas. Viendo la problemática de una y las ventajas de la otra - A - ciencia, la invención establece una tecnología que une la electrónica y la genética, dos áreas hasta la fecha disjuntas. Esta tecnología está basada en circuitos integrados, electrónica y, "ADN" o genética, creando con ello el primer "ADN" inorgánico con circuitos electrónicos, motivo por el cual la invención ha denominado a esta tecnología InChroSil (Inorganic CHROmosome based in SILicon) .
El sistema de la invención tiene la gran ventaja de que permite su reutilización, ya que el usuario puede utilizarlo tantas veces como se desee, ya que se materializa mediante circuitos electrónicos.
DESCRIPCIÓN DE LA INVENCIÓN
Para resolver los inconvenientes y conseguir los objetivos anteriormente indicados, la invención ha desarrollado un nuevo sistema que consigue la obtención de un "ADN" inorgánico .
Para comprender la invención, es necesario realizar una introducción genética de los cromosomas, que están formados por "ADN" y proteínas. A su vez el "ADN" está compuesto por dos fibras longitudinales unidas por centrómero. Estas fibras se llaman cromatidas y representan dos hebras idénticas del "ADN" duplicado.
Por consiguiente el "ADN" está compuesto por hebras o cadenas de nucleótidos, los cuales se diferencian en cuatro tipos que se numeran a continuación:
Adenina, se representa mediante la letra A. Guanina, se representa mediante la letra G. Citosina, se representa mediante la letra C. - Timina, se representa mediante la letra T.
Por consiguiente el "ADN" está compuesto por dos hebras enlazadas y cada hebra contiene innumerables nucleótidos. En una misma hebra no existen nucleótidos complementarios, es decir, pueden unirse sin restricción alguna. En cambio al enlazar las dos hebras, existen restricciones de complementariedad, de tal modo, que una Adenina (A) de una hebra sólo se puede unir con las Timinas (T) de la hebra complementaria, de igual modo las Guaninas (G) sólo se pueden unir con las citosinas (C) . El sistema de la invención se caracteriza porque comprende medios de codificación binaria de los diferentes cuatro tipos de nucleótidos que componen las hebras, de manera que a los nucleótidos que forman enlaces complementarios se les asignan códigos complementarios mediante la inversión de uno de ellos. Además la invención incluye unidades de almacenamiento de un código de un nucleótido y de un código seleccionado entre su código complementario o ningún código; todo ello para obtener un nucleótido y su complementario o únicamente un nucleótido, conectándose dichas unidades de almacenamiento en serie para formar la cadena de nucleótidos que constituyen cada hebra de una cadena de "ADN" . Por consiguiente mediante la codificación comentada, que se almacena en las unidades de almacenamiento, se obtiene una estructura electrónica a la que se permite el acceso a un nucleótido y/o a su complementario, a una hebra y a las dos hebras de la cadena de "ADN" según se requiera, mediante circuitos electrónicos conocidos que realicen la selección de las diferentes unidades de almacenamiento en función de los requerimientos deseados.
La invención prevé diferentes módulos que están constituidos por agrupaciones de unidades de almacenamiento, en las que en cada módulo se almacena una cadena de "ADN" , estando los módulos conectados en filas y columnas, de manera que se permita acceder a cada cadena de "ADN" mediante la selección de filas o columnas.
De la descripción realizada se deduce que la primera aplicación de la invención consiste en su empleo como banco de datos de "ADN" . En la realización preferente de la invención el código asignado a cada nucleótido comprende dos bits y su almacenamiento depende de las entradas aplicadas a cada unidad de almacenamiento mediante medios electrónicos, de manera que cada unidad de almacenamiento puede ser codificada según el nucleótido que se desee y su complementario .
La invención prevé la incorporación de medios de codificación de numeración en base 4 compuesta por cuatro nucleótidos de un cromosoma (A, G, C y T) . Además prevé que los dos bits correspondientes a cada nucleótido adquieren las cantidades decimales de 0 a 3 de manera que se permite conformar una- pluralidad de presentaciones numéricas determinadas por la posición de los dos bits y por el valor que recibe en cada posición. Esta codificación permite que cualquier sistema de codificación que tenga correspondencia con el decimal o binario, puede ser codificado con el sistema de numeración y codificación de la invención.
La codificación comentada permite que la invención incorpore medios para efectuar operaciones como son sumas, restas, multiplicaciones y/o divisiones, así como codificar cualquier número en coma fija o flotante de simple y doble precisión utilizando codificación en complemento Al y en complemento A2. Al igual que las memorias del estado de la técnica, las unidades de almacenamiento de la invención pueden ser volátiles, pero en este caso la invención denomina InCroSil Access Memory (IAM) , pudiendo ser también memorias no volátiles de sólo lectura que la invención denomina InCrosil Read OnIy Memory (IROM) . La invención incorpora medios de acceso estructurado a los módulos y unidades de almacenamiento mediante localización de una cadena de "ADN" , posterior localización de una hebra y a continuación mediante la designación de un nucleótico o grupo de nucleótidos, de manera que se pueda acceder a toda la cadena o parte de ella. Por consiguiente, mediante los módulos y unidades de almacenamiento de la invención no se accede por filas o columnas como sucede en las memorias convencionales, sino que permite tres accesos diferentes, según ha sido comentado, por lo que se permite un acceso a partir de tres selecciones que puede denominarse acceso tridimensional .
A su vez, tal y como ya fue comentado con anterioridad una cadena de "ADN" puede ser considerada como una fila o como una columna, es decir, el sistema que administra la memoria IAM, puede estipular cómo estarían almacenadas las cadenas de "ADN" en la memoria, ya sea por filas o por columnas .
En base a toda la estructura descrita, se comprende que la invención puede incorporar medios para codificar en las unidades de almacenamiento, que forman hebras, representaciones de problemas mediante grafos que comprenden elementos constituidos por vértices y aristas y opcionalmente pueden incorporar el peso o dirección de la arista, de manera que el sistema de la invención codifica a una hebra en un primer conjunto que contiene vértices y aristas y no contiene el peso de éstas, correspondientes a elementos iniciales y los correspondientes a los elementos que no contienen elementos finales; habiéndose previsto que en la hebra complementaria se codifique un segundo conjunto que contiene elementos del grafo constituidos igualmente por vértices y aristas correspondientes a los elementos finales y los correspondientes a los elementos que no contienen elementos finales. Cada una de las unidades de almacenamiento de ambas hebras están unidas entre sí mediante comparadores que forman una matriz para que se realice el procesado de ambas hebras de forma paralela así como las comparaciones entre todos los elementos de ambos conjuntos lo que permite resolver problemas que pueden representarse mediante grafos. Los comparadores forman una matriz y están conectados a un buffer al que se aplican medios de recuperación de caminos de orden polinomial para determinar la ruta más óptima entre dos puntos del grafo. Como fue señalado las aristas de los grafos pueden tener peso o dirección, en cuyo caso la invención comprende medios adicionales de almacenamiento del peso de una arista, así como medios para sumar los pesos de cada arista y obtener los pesos totales de cada arista, habiéndose previsto que además incorpore medios de ordenación de los pesos totales de cada arista según criterios previamente establecidos, lo que permite resolver problemas de algoritmos conocidos como son Dijkstra, Floyd-Warshall y Bellman-Ford, Ford-Fulkenson. La estructura descrita permite su aplicación en problemas de flujo como pueden ser flotas de vehículos, optimización de procesos industriales, flujos de trabajo, programas de acoplamientos y de redes de comunicaciones, para lo que estos problemas se representan como un grafo. Así por ejemplo la información e instrucción de la maquinaria de una planta industrial puede ser representada como un grafo para resolver el problema planteado.
Igualmente la invención prevé codificar el problema del camino hamiltoniano en las unidades de memoria de almacenamiento que constituyen las hebras, en una de las cuales se codifica el grafo completo y en las complementarias el grafo completo con restricciones conocidas. En este caso las hebras están conectadas a comparadores formando una matriz para comparar las aristas de ambos grafos dos a dos de forma paralela para indicar si los bits del resultado de cada comparación son todos iguales y se refieren a una misma arista y en consecuencia ésta pertenece a ambos grafos.
Al resultado de la comparación se la aplican medios para crear niveles del árbol de wallace indicativo de si la arista es camino o no lo es, de forma que se resuelve el problema del camino hamiltoniano.
En este caso los comparadores que comparan las aristas de ambos grafos dos a dos, están constituidos por semisumadores lógicos sin acarreo, cuya salida está conectada a una puerta lógica de detección de un solo bits del resultado de la comparación, para obtener un solo dato, tal y como fue señalado, y que indica si los bits del resultado de cada comparación pertenecen a ambos grafos de los conjuntos codificados.
Los medios para crear niveles del árbol de wallace comprenden unas primeras puertas lógicas por cada columna de la matriz de comparadores que representa el grafo completo y están conectadas a las salidas de los comparadores para confirmar la pertenencia de dicha arista al conjunto de aristas del grafo con restricciones de forma que indica si es o no camino.
Las salidas de las primeras puertas lógicas están conectadas a una segunda puerta lógica de detección de si todas las aristas son camino, de manera que la invención determina el camino hamiltoniano. Además incorpora medios de almacenamiento del resultado obtenido.
En este caso la invención también prevé la posibilidad de que se tenga en cuenta el peso de las aristas, para lo que comprende medios para recibir los caminos encontrados y establecer la correspondencia entre peso y arista y obtener los pesos de cada camino. En este caso también comprende medios de ordenación de los pesos de los caminos según criterios previamente establecidos para la elección del mejor camino.
En otra realización de la invención cuando se codifiquen los vértices y, por lo tanto se establezca el valor de las aristas que los unen, el sistema almacena en esa dirección de memoria, el valor del peso de esa arista en el grafo. En este caso se busca el valor de las aristas en la memoria, ya que como se conoce su dirección, se conoce su valor, es decir se codifica una referencia a la memoria, como es su dirección y no el valor de la arista. Los pesos obtenidos se suman para obtener los totales de cada camino que se almacenan en memorias con direcciones consecutivas y mediante medios de ordenación de los pesos de los caminos según criterios previamente establecidos, se efectúa la elección del mejor camino.
Esta configuración también permite la aplicación de la invención a la solución de problemas de ciclos hamiltonianos mediante una codificación indicativa de que el vértice de salida del grafo es igual al vértice destino.
También cabe señalar que la invención incorpora medios para codificar un grafo de manera que los vértices representan las aristas y a la inversa y así obtener qué secuencia de vértices se debe seguir para pasar por todas las aristas y permitir resolver el problema del camino euleriano .
Mediante la incorporación de medios para codificar en las hebras que el vértice inicial es el mismo que el vértice final, se permite la aplicación de la invención para resolver ciclos eulerianos .
La invención también permite establecer codificación del peso de las aristas en la resolución de caminos eulerianos o ciclos eulerianos, de forma que permite plantear nuevos problemas de optimización de los caminos eulerianos .
A continuación para facilitar una mejor comprensión de esta memoria descriptiva y formando parte integrante de la misma, se acompañan una serie de figuras en las que con carácter ilustrativo y no limitativo se ha representado el objeto de la invención.
BREVE ENUNCIADO DE LAS FIGURAS
Figura 1.- Muestra una representación de la cadena de "ADN" orgánica. Figura 2.- Muestra los diferentes tipos de estructuras de cadena "ADN" y las uniones entre nucleótidos.
Figura 3.- Muestra un posible ejemplo de realización de una implementación de una unidad de almacenamiento de un nucleótido y de su complementario.
Figura 4.- Muestra una tabla de la correspondencia entre diferentes sistemas de numeración comparados con la codificación en base 4 de la invención.
Figura 5.- Muestra una tabla correspondiente a la operación suma de dos nucleótidos según la codificación de la invención.
Figura 6.- Muestra una tabla equivalente a la figura anterior, pero para la resta.
Figura 7.- Muestra una representación de un posible ejemplo de resta.
Figura 8.- Muestra una tabla equivalente a las figuras 5 y 6, pero para la multiplicación.
Figura 9.- Muestra un posible ejemplo de una multiplicación . Figura 10.- Muestra una tabla de representación de coma flotante en simple precisión según la codificación de la invención.
Figura 11.- Muestra una tabla de diferentes combinaciones del exponente (como fija, complemento Al, A2 y exceso 44) .
Figura 12. - Muestra una tabla de representación de coma flotante de doble precisión.
Figura 13.- Muestra una representación esquemática de la unidad de almacenamiento básica representada en la figura 3.
Figura 14.- Muestra una representación esquemática equivalente a la figura anterior, pero según una configuración más detallada.
Figura 15.- Muestra una representación de la estructura de una posible agrupación de memorias volátiles y no volátiles representadas en las figuras 13 y 14.
Figura 16.- Muestra una representación de un posible ejemplo de un grafo. Figura 17.- Muestra una posible implementación para el cálculo de caminos .
Figura 18.- Muestra una representación de un grafo hamiltoniano dirigido y no ponderado.
Figura 19.- Muestra una representación del grafo del camino hamiltoniano.
Figura 20.- Muestra una cadena de "ADN" inorgánico de la invención referente a una agrupación posible de aristas y vértices para resolver el problema del camino hamiltoniano. Figura 21.- Muestra una codificación de los vértices y aristas según la figura anterior.
Figura 22. - Muestra una codificación de los vértices y aristas detallada de la figura anterior.
Figura 23.- Muestra el conjunto de cadenas de "ADN" inorgánicos de la invención con todas las posibles soluciones del camino.
Figura 24,- Muestra la representación de un semisumador lógico que se aplica en el sistema de la invención. Figura 25.- Muestra una representación de una posible implementación para efectuar la comparación de aristas en aristas en paralelo para la resolución del problema hamiltoniano.
Figura 26.- Muestra un diagrama de bloques funcional de la implementación de la invención para la resolución de problemas hamiltonianos.
Figura 27.- Muestra el circuito completo para la solución del camino hamiltoniano.
Figura 28.- Muestra un diagrama de bloques funcional de una primera implementación para la resolución del probleraa del camino hamiltoniano ponderado.
Figura 29.- Muestra un diagrama de bloques funcional de una segunda implementación para la solución del problema del camino hamiltoniano ponderado. DESCRIPCIÓN DE LAS FOR]XtAg DE REALIZACIÓN PREFERIDAS
A continuación se realiza una descripción de la invención basada en las figuras anteriormente comentadas.
Como ya ha sido comentado con anterioridad, un cromosoma está formado por "ADN" y proteínas. A su vez el "ADN" está compuesto por hebras o cadenas de nucleótidos, los cuales se diferencian en cuatro tipos : Adenina (A) ,
Guanina (G) , Citosina (C) y Timina (T) .
El "ADN" está compuesto por dos hebras enlazadas y cada hebra contiene innumerables nucleótidos . En una misma hebra no existe nucleótidos complementarios, es decir, pueden unirse sin restricción alguna. En cambio al enlazar las dos hebras, existen restricciones de complementariedad, de tal modo, que un Adenina (A) de una hebra sólo se podrá unir con las Timinas (T) de la hebra complementaria, de igual modo con las Guaninas (G) con las Citosinas (C) , es otro enlace posible. Debido a esta organización de las hebras, la codificación del ADN no puede ser al azar y debe tener una estructura previamente definida (véase figura 1) .
Para modelar el comportamiento orgánico del cromosoma se diseño una codificación, que se describe de forma detallada en secciones posteriores, para cada uno de los nucleótidos, en la siguiente enumeración se presenta una parte de esta codificación:
• Adenina (A) se le asigna el valor de "00".
• Guanina (G) se le asigna el valor de "01".
• Citosina(C) se le asigna el valor de "10".
• Timina (T) se le asigna el valor de "11". Una vez codificados los nucleótidos, siguiendo la codificación implementada, el siguiente paso es la implementación a nivel físico mediante circuitos electrónicos (por ejemplo, biestables u otro dispositivo que almacene los nucleótidos o estados) , y establecer la estructura física de los mismos dentro de las hebras y sus relaciones con la hebra complementaría. La idea que se planteó inicialmente era un circuito, el cual estaba dividido en cuatro partes iguales. Cada parte del circuito estaba separado de la otra mediante un material aislante, para no producir interferencias entre los distintos componentes que se almacenan en ellas. Por otro lado, en cada parte del circuito, se colocarían los componentes que codifican a un determinado nucleótido inorgánico. Esto permite la libre elección de un determinado nucleótido dentro de la posición de una hebra artificial mediante las conexiones permitidas entre los diferentes nucleótidos.
La longitud de la hebra dependerá del número de circuitos colocados en forma de pila, creando así un chip tridimensional, cosa que permitirá la emulación de la estructura orgánica (cromosoma) . También se puede realizar a nivel planar, la elección de una tecnología u otra, dependería de los recursos existentes y las necesidades finales del proyecto. Una vez codificado el circuito con los cuatro nucleótidos, se debe conectar cada circuito con su circuito superior, mediante conexiones en serie, de esta forma se obtiene una hebra o cadena de nucleótidos . Por otra parte se pensó en las conexiones en paralelo o enlaces con la hebra complementaria, hay que tener en cuenta las relaciones de complementariedad de los distintos nucleótidos, relación explicada anteriormente. Estos enlaces se codificaran dentro del propio circuito mediante componentes lógicos . Con este sistema se definiría el nucleótido de una hebra y con el circuito combinacional o método de inversión se obtendría de forma inmediata el nucleótido complementario en la otra hebra. Si esto se aplica en cada circuito apilado, se produciría una reacción en cadena, que nos permitiría definir la hebra completa. De esta forma se evitaría inconsistencias entre los enlaces paralelos, ya que no se pueden unir dos nucleótidos que no sean complementarios . Por otra parte, los enlaces en serie o entre nucleótidos de una misma hebra se realizará por posición concreta, es decir, se realizará de una forma contigua, por lo se podrán realizar tanto accesos secuenciales como aleatorios a un determinado nucleótido dentro de una determinada hebra. Con este sistema de acceso, y las conexiones paralelas, se podrá activar un determinado par de nucleótidos en cualquier momento y poder conseguir innumerables combinaciones y, cromosomas diferentes.
Este planteamiento inicial desaprovecha mucha información en cada operación, ya que existen partes del circuito que no se utilizan, aprovechándose sólo la mitad del circuito, es decir, el planteamiento inicial era realizar un circuito con los cuatro nucleótidos de forma estática, de esta forma si se elegía un nucleótido determinado, en el mismo circuito se activaba el nucleótido de la hebra complementaría. Indicar que en este planteamiento inicial los nucleótidos de un mismo nivel residen en el mismo circuito y, se activan por la activación de uno de los dos. Por ese motivo si se configuraba un par de nucleótidos se desaprovecha la mitad de los recursos del circuito, por esa causa se pensó en un planteamiento más dinámico, donde los nucleótidos no estuvieran predefinidos en el circuito y que dependiendo de unas determinadas entradas obtuviéramos un determinado nucleótido u otro. Con este nuevo planteamiento los nucleótidos en un circuito pasan a ser dos y, además son dinámicos, es decir, dependiendo de unas determinadas entradas se obtiene un determinado tipo de nucleótido. Esta reducción hace que se aprovechen mejor los recursos del circuito, ya que se pasa de un circuito de cuatro partes a un circuito de dos. Toda esta simplificación no afectará la estructura del nucleótido, ya que seguirá estando compuesto de dos biestables o componentes electrónicos equivalentes, aunque el valor almacenado en ellos dependerá de las entradas aplicadas, ya que deben de ser dinámicos.
Con este nuevo diseño se pasa de una estructura de pila a una forma totalmente helicoidal como se ve en la figura 1. Por tanto, con este planteamiento se simplifica el circuito y la utilización del mismo, además en fase de fabricación existe una reducción considerable en los costes de producción y la utilización de recursos digitales y electrónicos, al aprovechar mejor el espacio y los componentes Las conexiones inorgánicas del cromosoma se dividen en dos partes muy importantes: la conexión en serie, donde un determinado nucleótido pueda conectarse con otro nucleótido del mismo tipo u otro y, por otra parte las conexiones paralelas donde un determinado nucleótido de una hebra sólo se puede conectar con su complementario o ninguno. Por lo tanto, si la hebra tiene todas sus conexiones o enlaces se le dice que la hebra está completa, mientras que si uno de los nucleótidos no tiene correspondencia con su complementario, la hebra está incompleta. Esta característica se tuvo en cuenta a la hora de diseñar las conexiones en paralelo entre nucleótidos de hebras complementarias, ya que en la activación de uno de los nucleótidos se indica al mismo si va producirse la activación del nucleótido complementario. Con este proceder se emula cualquier estructura de cromosomas, ya que no todos poseen las mismas características y todos los pares de nucleótidos.
Para explicar las posibles combinaciones de las cadenas de ADN, en la figura 2 se presentan las combinaciones que se podrían dar. Estas estructuras permiten poder realizar operaciones con las cadenas de ADN, de tal modo que se pueden realizar problemas complejos, tales como los NP o NP-Completos . Como se ha comentado la invención se basa completamente en la relación existente entre el par nucleótido y todos sus posibles enlaces entre nucleótidos de una misma hebra, como entre nucleótidos de hebras complementarías .
En la figura 3 se representa un ejemplo de implementación que se ajusta a la descripción anteriormente comentada y en la que una unidad de almacenamiento 1 se materializa mediante cuatro biestables 2 de tipo D, de forma que los dos superiores están previstos para la codificación de un nucleótido y los dos inferiores para la codificación de su complementario. Por ejemplo, supongamos una implementación como la figura 3, si sólo se quiere utilizar el nucleótido de arriba (hebra incompleta) se activara la señal SELO de la figura 3, de este modo la señal de entrada/salida (E/S) nos permite establecer el valor que se desee que almacenen los biestables 2 del nucleótido de arriba. En cambio si sólo se quiere el nucleótido de abajo se activará la señal SELl de la figura 3 y, del mismo modo la señal (E/S) permitirá establecer el valor de los biestables del nucleótido de abajo . En cambio, si se quiere que los dos nucleótidos se activen (hebra completa) se activaran las señales SELO y SELl y mediante las señales (E/S) se estable el valor de uno de los nucleótidos, mientras que el otro nucleótido se activara con la utilización de puertas XOR. Con este diseño de un par de nucleótidos se pueden conseguir todas las combinaciones posibles entre nucleótidos de hebras complementarias y por lo tanto emular el comportamiento de las posibles combinaciones de un cromosoma orgánico.
Las puertas lógicas de la unidad de almacenamiento 1 permite codificar los enlaces dentro del propio circuito, así como establecer que se desea almacenar un nucleótido o obtener su valor mediante la señala de escritura/lectura
(W/E) .
La representación esquemática de esta unidad de almacenamiento 1 se muestra en las figuras 13 y 14 tal y como será descrito con posterioridad.
También prevé la codificación de un sistema de numeración en base 4, el cual está compuesto por dos nucleótidos que forman una hebra de "ADN" . Este nuevo sistema es denominado en la invención Cod-InChroSil
(CODification - Inorganic CHROmosome based in SILicon) , de forma que se proporciona la posibilidad de aumentar la precisión de los sistemas numéricos actuales, además de poder utilizar en las operaciones, las características intrínsecas de la estructura de una hebra de ADN.
El sistema de numeración en base 4 de la invención utiliza como símbolo los nucleótidos de una hebra de "ADN" A, G, C y T. Convencionalmente es conocida la codificación del "ADN" orgánico de forma macroscópica, ya sea mediante la codificación de una hebra o porción, o también codificando las operaciones con sus operandos. Estas codificaciones no permiten tanta flexibilidad, porque limitan el número de combinaciones que se pueden realizar. Por ese motivo la invención consiste en un sistema de numeración donde se codifica el ADN de forma microscópica, es decir, a nivel de nucleótido que forma la hebra de ADN. Esta característica de atomicidad, permite realizar combinaciones para generar un sistema de numeración que tenga una potencia y escalabilidad, necesarias para la representación de cantidades numéricas. Se define la codificación de un nucleótido como una secuencia de dos bits, los cuales adquieren las cantidades decimales de 0 a
3. Este sistema de numeración que presentamos, permite conformar numerosas representaciones numéricas, conformadas por la posición y el valor del símbolo dentro de la cadena numérica, resaltar que este sistema numérico es posicional y que el símbolo tiene dos significados, por una parte la posición dentro de la cadena numérica y, por otra parte el valor que recibe el símbolo. Con la combinación de ambas informaciones, se permite obtener parte del valor final de la cantidad numérica que se desee representar. En la figura
4, se observan la correspondencia entre nuestro sistema de numeración de la invención y el resto de sistema de numeración que se están utilizando en la actualidad. Siempre un ejemplo es más aclaratorio que un conjunto de palabras, por ese motivo, si se considera el número 4567io en base decimal, la representación correspondiente en binario es 000100011101011I2, en octal es 0107278, en hexadecimal es 11D716 y finalmente en la codificación de Cod- JnChroSil es AGAGTGGT4. También se puede cambiar de un sistema numérico utilizando un desarrollo polinómico del número (teorema fundamental de la numeración) , donde las cifras del número poseen dos valores, por una parte el intrínseco como cifra y luego el posicional, de este modo la ecuación de cambio viene determinada como la siguiente:
n° (Xn-1 X2XiX0) b = Xn-Ib""1+ +X2b2+X1b1+X0
Por ejemplo, tenemos el siguiente número codificado en Cod- JnChroSil AGAGTGGT4, el número en decimal es el siguiente :
AGAGTGGT4 = A- 47 + G- 46 + A- 45 + G- 44 + T- 43 + G- 42 + G- 41 +
Tr--44°° == 00--4477 ++ 1l--446e + 00--4455 ++ 11--4444 ++ 3-4J 1-42 + 1-41 + 3 4o = 4567io La operación inversa de un número decimal a una codificación Cod- JnChroSil . Suponiendo el número en decimal 189io, el número en Cod- JnChroSil es el siguiente:
189 div 4 = 47 -> restθ(189,4) = 1 -> G 47 div 4 = 11 -> resto(47,4) = 3 -> T 11 div 4 = 2 -> resto(ll,4) = 3 -> T 2 div 4 = 2 -> resto (2, 4) = 2 -> C
Figure imgf000022_0001
Se muestran ejemplos, supongamos se tiene el número 873,875i0 y se quiere pasar a Cod- InCh.roSil , la mecánica es la siguiente:
• La parte entera es calculada como el ejemplo anterior TGCCG.
• 0,875 x 4 = 3,5 -) la parte entera es 3 entonces es T.
• 0,5 x 4 = 2 -) la parte entera es 2 entonces es C. • Finalmente, la parte decimal es cero, entonces el número final es TGCCG, TC4
De forma general en un sistema de numeración se puede representar una cantidad numérica de la siguiente forma Nb = [an-i an-2 an.3... a3 a2 ai a0, a.χ a-2 a-3...ak] b, donde n+k indica la cantidad de dígitos de la cifra, a su vez n indica el numero dígitos en la parte entera, mientras que k indica la parte fraccionaria. Finalmente indicar, que con la utilización del sistema de numeración Cod-JnChroSil lo se hace compatible con el resto de sistemas de numeración actuales, prueba de ello la encontramos en los párrafos anteriores, que se ha pasado de decimal a Cod-JnChroSil y de Cod-JnChroSil a decimal. Todo sistema de numeración necesita de unas reglas y operaciones para poder realizar cálculos entre sus operandos . Por ese motivo en Cod-InChroSil, consideran las habituales, como son; la suma, resta, multiplicación, división, etc. En primer lugar es define la suma, debido a que es una operación altamente utilizada en numerosos cálculos matemáticos. La suma es una operación aritmética definida sobre un conjunto de números y sus estructuras
(vectores, conjuntos, etc.) . En la invención, la suma se define como una operación sobre números codificados en Cod-
JnChroSil . Como bien es sabido, la suma posee diferentes propiedades que la caracterizan y que serán aplicables en la invención, estás son; la propiedad conmutativa, donde el orden de los operandos no altera el resultado, la propiedad asociativa, el elemento neutro y, finalmente el elemento opuesto. En la figura 5 se dan las directrices para la suma de dos nucleótidos. Resaltar, que como en la suma decimal que cuando se supera la base se dice la frase y llevamos una, en esta operación de suma también se tiene en cuenta el acarreo ocasionado por un desbordamiento, lo podemos observar en la figura 5 donde hay celdas de la tabla que posee dos símbolos, el primero de ellos representa el desbordamiento producido y, el segundo el resultado de la operación, es decir, suponiendo que se quieren sumar dos números ATCGATA y TAGCCAA, en este caso no se produce ningún acarreo.
Cuenta o acarreo
ATCGATA número 1 (3660 en decimal) + TAGCCAA número 2 (12704 en decimal)
TTTTCTA resultado (16364 en decimal)
En este otro ejemplo tenemos los siguientes números ATCGATA y ATCTTTC, en este caso si que se producen acarreos. G G G G G cuenta o acarreo A T C GA T A número 1 (3660 en decimal)
+ A T C T T T C número 2 (3838 en decimal)
GiTtGtGTAtCC resultado (7498 en decimal o GTGGACC)
La siguiente operación que se define es la resta en codificación Cod- JnChroSil . La resta es conocida como una operación aritmética opuesta a la suma, en el caso particular de la invención la resta entre dos nucleótidos se define siguiendo las siguientes directrices de la figura 6.
Como se observa en la figura 6 se ha tenido en cuenta el acarreo ocasionado al restar dos nucleótidos, por ese motivo y al igual que se hizo con la operación de suma, en una misma celda de la tabla (véase figura 6) , se escriben dos símbolos, el primero hace referencia al desbordamiento o acarreo y el segundo hace referencia al resultado. Para ver como funciona la resta mediante esta codificación se muestra un ejemplo aclaratorio de esta operación. Los siguientes números en Cod-JnChroSil, TGAT4 (en decimal es el 211) y GCCC4 (en decimal es el 106) , el resultado de la resta es 105 en decimal GCCG4 en Cod-JnChroSil, seguidamente se realiza el cálculo paso a paso con la resta que ha sido definida en la figura 7.
Como observamos en la figura 7, cuando se resta T - C =
G no se produce acarreo, pero si cuando se resta A - C = GC
(la siguiente cifra del numero) , el resultado es C, pero el acarreo es G, esta cantidad tiene que sumarse a la siguiente cifra, en este caso es C. De esta operación de suma se obtiene T. A continuación se resta G del numero 1 al nuevo resultado (T) , obteniendo el valor de GC, de nuevo se ha producido un acarreo con valor G. Se suma este acarreo con la siguiente cifra del numero 2 y el resultado se resta con su homólogo posicional del numero 1, el cual se obtiene G. Como se observa el mecanismo es el mismo que en la resta en decimal, cuando la cifra del número 1 es mayor a la cifra del numero 2 se realiza la resta y no se provoca desbordamiento, pero cuando es al contrario, se calcula cuantos llevamos desde la cifra del numero 2 hacia la cifra del numero 1, siendo este el resultado. A continuación se suma una unidad a la siguiente cifra y se restan ambas cifras de la misma posición. La resta también se puede establecer como la suma de dos números, donde uno de ellos se utiliza el opuesto (en este caso complementario) más la suma del nucleótido G (más tarde se explicará en secciones posteriores este formato de representación) . Como se comentó en JnChroSil la cadena de ADN está formada por dos hebras que se rigen por propiedades de complementariedad, es decir, un nucleótido de una hebra no se puede unir con cualquier nucleótido de la hebra complementaria, sólo con su complementario establecido. Esto permite que cuando se codifique un número en Cod- TnChroSil en una cadena de ADN, se esté codificando automáticamente su complementario en la hebra complementaria. Esta propiedad intrínseca de las cadenas de ADN, permite aplicar operaciones de suma muy fácilmente, debido a que ya se posee el opuesto o complementario del numero, sólo faltaría que este número fuera sumado por el nucleótido G, formato de representación denominado complemento a 2 y, que en líneas posteriores a este documento se explica con detalle. Se recurre otra vez al ejemplo, para dar una visión más aclaratoria de la operación resta en este sistema de numeración. Si se tiene el numero TGCG (217 en decimal) y se quiere restarlo con el numero CCCT (171 en decimal) , la resta decimal nos da el siguiente resultado; 46 (ACTC) . En este sistema de numeración se aplican los siguientes pasos: • El primer operando no se modifica (TGCG)
• Se toma el complementario del segundo operando, es decir, A se transforma en T y viceversa y, C se transforma en G y viceversa, en este caso en concreto es GGGA.
• Al número resultante del punto 2, se suma G (GGGG) .
• Se suma el primer operando y el numero del punto 3.
• Se elige, el número máximo de nucleótidos de los dos operandos y, este será el resultado de la operación, en este ejemplo es ACTC.
En forma de ecuación quedaría de la siguiente forma: Resol ReSta = Operandol4 + Complemento (Operando24) + G4) , donde Resol Resta es el resultado de la resta, Operandol4 es el primer operando en codificación Cod- InChroSil , Operando24 es el segundo operando en la misma codificación que el Operandol4 y, finalmente G4 que representa el literal del nucleótido G de una hebra de ADN. Por otra parte se define la función Complemento, como una función inyectiva tal queVx, ye {A, G, C, T} , 3 una f, función de complemento, tal que f:{A, G, C, T} ->{A, G, C, T} , donde f (x) = y, x ≠ y, y es el nucleótido complementario de x.
La siguiente operación que se define es la multiplicación. La multiplicación o producto se define como una operación aritmética donde se realizan sucesivas sumas. Al igual que en las anteriores operaciones se dan unas directrices para la multiplicación a nivel de nucleótidos, estos productos se observan en la figura 8.
Se tienen los siguientes números GTTG (125 en decimal) y GGA (20 en decimal) entonces el producto de ambos es el que se muestra en la figura 9. Como se observa se realiza un producto de un nucleótido por toda la cadena, generando así sumas sucesivas, al igual que pasa con la multiplicación decimal. Resaltar que en la operación anterior se han tenido en cuenta los acarreos en las sub-sumas, aunque no se han representado, la causa es la no sobre-carga gráfica de información en la representación del producto anterior. Además se explicó en la definición de sumas, que debido a la suma de dos nucleótidos que provocan desbordamiento o acarreo, se suma la cantidad de acarreo al nucleótido siguiente.
Por último falta definir la operación aritmética de la división. La división se realiza igual (tiene el mismo mecanismo) que en el caso decimal, pero a diferencia de la de decimal, la restas y multiplicaciones se realizan mediante la operaciones de resta y multiplicación respectivamente, que se han definido en este documento. Por ejemplo, supongamos los siguiente números en Cod- InChroSil; dividendo es AGAACGA (en decimal es 1060) , mientras que el divisor es TGA (en decimal es 52) . Tras realizar la operación el cociente de la división es 20 en decimal (GGA en Cod- InChroSil) y, el resto, también es 20 en decimal
(GGA Cod-JnChroSil) , de esta forma, AGAACGA = TGA • GCA +
GCA (dividendo = divisor x cociente + resto) . Finalmente indicar, que con este sistema de numeración, Cod- JnChroSil, se pueden realizar todo tipo de operaciones al igual que con los existentes sistemas (binario, octal, hexadecimal, etc.). Esta característica unida a la gran posibilidad de migración a otros sistemas numéricos, permite trabajar con la información de las hebras de ADN, con mayor facilidad y, realizar con ellas operaciones que anteriormente eran impensables. Por ese motivo, el sistema de numeración Cod- JnChroSil, además de servir como apoyo a toda la tecnología relacionada a InChroSil y a esta invención, se presenta como una alternativa para la manipulación y utilización de la información contenida en las hebras de ADN.
Por otra parte, decir que una representación en coma flotante es un método de representación de números reales, donde la peculiaridad es la flotación o el movimiento de la coma, elemento que separa la parte entera de la parte decimal (fraccionaria) de un número real. En oposición existe el sistema de representación en coma fija, donde de antemano se establece el número de dígitos que pertenecen a la parte decimal y cual a la parte entera. Estos sistemas de representación en coma flotante permiten a los sistemas de numeración representar cantidades numéricas grandes. Esta es la causa por la que se ha utilizado ampliamente este formato de coma flotante para la representación de números grandes. Un claro ejemplo, se encuentra en la área de la informática, que ha utilizado este tipo de representación, para el almacenamiento de representaciones numéricas muy grandes, que luego podían ser manipuladas matemáticamente. Por otra parte, todo número en coma flotante sigue un patrón establecido, el cual se puede resumir en la siguiente ecuación: r = m • be, donde r es el número real, m es la mantisa, b es la base y finalmente e es el exponente, que permite elevar la base. Por ejemplo, el número 0.000123i0 en coma fija (utilizamos el sistema decimal) , en coma flotante podría tener las siguientes representaciones: 1.23 10"4, 0.123 10'3, 0.0123 10~2, 0.00123 10"1, etc. Como se observa en las anteriores representaciones numéricas, todas hacen referencia al mismo número pero con diferente representación en coma flotante . Por ese motivo y para evitar las ambigüedades en las representaciones de cantidades numéricas, se estableció un estándar que permite la representación homogénea de los números en coma flotante. Este estándar fue presentado al IEEE en el siglo pasado, más concretamente en la década de los ochenta, con el nombre de estándar IEEE 745. Este estándar permite definir un amplio rango de formatos de representación de cantidades numéricas, como son el cero y valores des-normalizados (el infinito y NAN) . Por otra parte, también se definen un conjunto de operaciones que se pueden hacer en este formato, denominada Aritmética de Coma Flotante. En este estándar, el número de bits que se puede utilizar viene relacionado con la precisión que se puede obtener con la representación de los números, es decir, si utilizan más bits la precisión y el rango de representación es mayor. Esto permite diferenciar dos grandes grupos, aunque existen en la literatura extensiones de ambos. El primero de ellos es el de simple precisión, el cual utiliza 32 bits para su representación. Estos 32 bits están repartidos en tres secciones que identifican al número. Por otra parte, tenemos otro formato del estándar, que presenta mayor capacidad en sus representación y, que está compuesto por 64 bits, el doble, de ahí su nombre doble precisión. Al igual que su hermano pequeño, los bits de este formato están repartidos entre 3 secciones o campos, que caracterizan e identifican al número. En las siguientes líneas explicaremos el sistema en coma flotante para el sistema de numeración Cod- JnChroSil. Como se comento anteriormente se está tratando con un sistema de numeración que permite representar cantidad numéricas con sólo cuatro símbolos, los nucleótidos que componen una hebra de ADN. Pero al igual que los sistemas de numeración actuales, se necesitan muchos símbolos del sistema para representar cantidades numéricas grandes. Como se ha observado anteriormente la flexibilidad que posee los formatos en coma flotante es muy importante, por ese motivo, se ha considerado establecer un formato en coma flotante que permita representar números muy grandes mediante la codificación en Cod- JnChroSil. Si se utiliza esta codificación en los sistemas JnChroSil encontramos que por una parte se tiene la posibilidad de representar números muy grandes y, por otra parte, se aumenta la información almacenada del número, debido a que cuando se representa un número en este formato, también se está almacenando el número complementario u opuesto a este. Esto permite simplificar en gran medida las operaciones matemáticas que necesiten ambos números. El siguiente paso es ¿Cómo establecer el formato para poder utilizar esta característica que ofrece los sistemas TnChroSil y, en definitiva el ADN?, la contestación la encontramos en las siguientes líneas, donde se explica como se ha definido un formato de representación en coma flotante para números codificados en Cod- JnChroSil . La invención puede definir dos grandes precisiones para las representaciones en coma flotante; por una parte está el formato de simple precisión, el cual se ha definido que posea 20 nucleótidos en su representación, haciendo un pequeño inciso en esta parte del documento, como bien ha percibido el lector en las líneas anteriores no se está hablando para cuantificar la longitud de la representación, de bits, sino, de nucleótidos. Continuando con la explicación del formato, se han utilizado 20 nucleótidos para establecer el formato de simple precisión. En este formato los 20 nucleótidos se reparten o distribuyen en 6 secciones o campos, que se describen a continuación; dos secciones de las seis están dedicadas a establecer cual de las dos hebras se utiliza para representar o definir el exponente y la mantisa respectivamente. Sendas secciones poseen una longitud de un nucleótido, información suficiente para poder decidir qué parte se debe elegir. Por ejemplo, si encontramos una representación donde en una sección anterior al exponente, aparece el nucleótido A, indica que el exponente que se necesita está en la hebra superior, por el contrario, si se encuentra un nucleótido T, indica que el exponente viene representado por la hebra inferior. Con este juego de posiciones se pueden realizar diversas combinaciones en la representación de un mismo número y simplificar en gran medida posibles operaciones matemáticas. Dentro del formato de representación en coma flotante existen otras dos secciones que tienen la función de especificar el tipo de codificación que están representados el exponente y la mantisa. Se puede considerar para este formato cuatro tipos de codificación, que son los que se presentan en la siguiente enumeración.
• Signo Magnitud (toma el valor de A en la sección) : El formato de representación de enteros con signo que se denomina Signo Magnitud, la cual imita nuestra escritura manual de enteros, por una parte el signo y luego la magnitud del numero. Por ejemplo, el número - 34i0 el cual en Cod- InChroSil es GAAC4, si se considera que el signo negativo se codifica como C y, por el contrario el signo positivo por A, por lo tanto el número de nuestro ejemplo es el siguiente CGAAC.
• Complemento a uno (toma el valor de G en la sección) : Se define el complemento a uno con la siguiente ecuación Nb Cal = bn - Nb/ donde Nb Cal es el numero en complemento a uno del numero Nb Sea N4 = CCTAAAG entonces su complemento a uno es N4 Cal = 47 - CCTAAAG = GAAAAAAA - CCTAAAG = GGATTTC.
• Complemento a dos (toma el valor de C en la sección) : Una vez calculado el complemento a l, es fácil obtener el complemento a 2, por lo tanto el cálculo del complemento a dos sería mediante la siguiente ecuación Nb Ca2 = bn-Nb+l, por lo tanto siguiendo el ejemplo anterior, el numero en complemento a dos es el siguiente N4 Ca2 = 47-N4 + G = GAAAAAAA - CCTAAAG + G = GGATTTT.
• Exceso N (toma el valor de T) : El exceso n se formula de la siguiente forma NExceso 4= N4 + (N-I) .
En definitiva, estas secciones especifican la codificación en la que está el elemento (exponente o mantisa respectivamente) , es decir, si el anterior nucleótido al exponente o la mantisa posee por ejemplo el valor de G, esto indica que el exponente o mantisa está codificado en complemento Al. Finalmente, indicar que la longitud de estas secciones es de un nucleótido, al igual que como las secciones que determinaban la hebra a utilizar. Para poner punto final a la explicación de las secciones que conforman el formato de coma flotante de simple precisión, se refiere la sección de signo con una longitud de uno nucleótido y, que permite saber el signo del numero que se representa, es decir, si en esta sección se tiene el nucleótido A, quiere decir que el numero es positivo, por el contrario si se tiene el nucleótido T el numero es negativo. Por otra parte, está la sección del exponente, la cual posee una longitud de 4 nucleótidos. Finalmente esta la sección de la mantisa que con una longitud de 11 nucleótidos se completa los 20 nucleótidos que forman el formato de representación. En general y de forma gráfica en la figura 10 se muestran las diferentes secciones en que se divide el formato de coma flotante en simple precisión con 20 nucleótidos.
Con el anterior formato se puede conseguir exponentes con los siguientes rangos de valores, que se presentan en la siguiente enumeración.
• Coma fija con signo, Sea x el exponente entonces x e [-127,0] U [0,+127]
• Complemento Al, Sea x el exponente entonces x e [- 127,0] U [0,+127] • Complemento A2, Sea x el exponente entonces x € [- 128,0] Kj [0,+128)
• Exceso 44, Sea x el exponente entonces x e [-128,0] U [0,+128) En la figura 11 se puede observar las diferentes codificaciones que puede adquirir el exponente. También se pueden observar las diferentes relaciones del mismo número en diferentes sistemas de codificación, además de la característica de la doble hebra que puede ser utilizada según las operaciones o el propósito convengan.
Por otra parte, se tiene que la mantisa que esta compuesta por 11 nucleótidos, de este modo los rangos que se pueden obtener con las diferentes codificaciones son los siguientes:
• Coma fija sin signo, Sea m la mantisa entonces m e [- 4X1-1,O] U [0,4"-I]
• Complemento Al, Sea m la mantisa entonces m e [-411- 1,0] u [0,4"-I]
• Complemento A2, Sea m la mantisa entonces m e [-4",O] u [0, 411) -
• Exceso 411, Sea m la mantisa entonces m e [-4",O] u
[0, 4")
De forma global, con este formato de representación en coma flotante con simple precisión se pueden conseguir números que estarían comprendidos en el siguiente intervalo numérico [-17592186044416 • 10127, 0] U [0,17592186044416 • 10127] . Finalizaremos la explicación del formato de simple precisión con un ejemplo que ya ha sido utilizado para el formato IEEE 745. Recordando que el número era -118.625i0 y su codificación en IEEE 745 de simple precisión es 1100001011101101010000000000000 0, un numero binario de 32 bits. Por tanto utilizando nuestro sistema de coma flotante en simple precisión de la invención se tiene la siguiente codificación.
Hebra 1: T AT CAGG AA AGCCCAAAAAA Hebra 2 : A TA GTCC TT TCGGGTT T TTT Como se puede observar el numero es negativo, por ese motivo se a codificado el primer nucleótido como T, los siguiente nucleótidos indican que el exponente esta representado en la hebra 1 y su codificación es exceso 128. Con respecto a la mantisa esta representada con coma fija sin signo y se corresponde con la hebra 1.
El siguiente formato de representación en coma flotante es la doble precisión, la cual utilizaba 40 nucleótidos o dos hebras de 20 nucleótidos. El formato de representación en doble precisión es el mismo que el de simple, bajo la salvedad que se aumenta el numero de nucleótidos en las secciones de exponente y mantisa. De forma gráfica en la figura 12 se muestra el formato de representación en doble precisión para 40 nucleótidos.
El rango de valores que puede admitir el exponente vendría definido por la siguiente enumeración.
• Coma fija con signo, Sea x el exponente entonces x e [-47-l,0] U [0,47-l]
• Complemento Al, Sea x el exponente entonces x € [-47- 1,0] U [0, 47-l]
• Complemento A2, Sea x el exponente entonces x e [- 47,0] u [0, 47) • Exceso 47, Sea x el exponente entonces x e [-47,0] u [0, 47)
Para el caso de la mantisa el rango de valores que se podrían representar en este formato de coma flotante de doble precisión son los que se muestran en la siguiente enumeración.
• Coma fija sin signo, Sea m la mantisa entonces m e [- 428-l,0] u [0, 428-l] • Complemento Al, Sea m la mantisa entonces m e [-428- 1,0] u [0, 428-l]
• Complemento A2 , Sea m la mantisa entonces m e [-428,0] u [0, 428) • Exceso 428, Sea m la mantisa entonces m e [-428,0] U [0, 428)
Realizando diferentes combinaciones entre el exponente y la mantisa se pueden obtener números con este formato de coma flotante de doble precisión que estarían comprendidos dentro de este intervalo numérico e [-72057594037927936 • 106553e, 0] U [0,72057594037927936 • 1065536] .
La unidad de almacenamiento 1 descrita, puede ser de dos tipos que la invención ha denominado Mem- JnChroSil (Memory INorganic CHROmosome based in SILicon) . La invención puede utilizar memorias volátiles y no volátiles. La memoria volátil implementada, se ha denominado como JnChroSil Access Memory (IAM) . Este tipo de memorias, además de tener la característica de ser volátil, tiene la propiedad de acceso estructurado, de este modo accedemos a un nucleótido, mediante la previa localización de la hebra, para posterior designar el nucleótido. La memoria volátil de la invención permite la escritura y lectura de la información almacenada en ella. Esta memoria es volátil, es decir, si se desconecta de la energía eléctrica, la información se pierde. Por este motivo, este tipo de memoria temporal se suele utilizar para almacenar resultados intermedios o, datos que no son permanentes. El acceso diseñado, para este tipo de memorias es estructurado, es decir, si se quieren obtener datos de esta memoria, la funcionalidad es la siguiente; se elige una cadena de ADN inorgánico (o también denominado JnChroSil) de la memoria. Una vez determinada la cadena de ADN inorgánico se elige que hebra, que contiene la información que buscamos, indicar que las cadenas de ADN inorgánico que se ha desarrollado para las memorias, están compuestas de dos hebras, al igual que sus homologas orgánicas. Con estas dos premisas localizadas, el siguiente punto es determinar que nucleótido o grupo de nucleótidos se quiere acceder, aunque también se puede dar el caso, que el usuario quiera acceder a la vez, a parte o a toda la cadena de ADN inorgánico, el cual previamente se había localizado. Con este sistema tridimensional, que hemos implementado para un sistema de memoria volátil, se ha utilizado la tecnología básica explicada en este documento ( XnChroSil) , ya que es fácilmente integrable en la tecnología existente, para la fabricación de memorias volátiles. Por otra parte, esta característica de estructuración hace que el sistema de memoria de la invención sea innovador y novedoso, ya que se ha considerado una dimensión más, la hebra, ya sea está principal o la complementaria, ya que en los anteriores sistemas de memoria volátil, sólo se considera dos dimensiones; las filas y las columnas. Otra característica de la invención es que se puede considerar una cadena de ADN inorgánico como una fila o como una columna, es decir, el sistema que administra la memoria (IAM) , puede estipular como estarían almacenadas las cadenas de ADN en la memoria, ya sean por filas o por columnas. Este sistema de memoria
(IAM) se diferencia por el carácter genético que tiene, debido a que mediante materiales inorgánicos se pueden almacenar información del ADN orgánico. Por lo tanto, las memorias volátiles o RAM existentes, además de ser distintas por el tipo de acceso, también lo son por la unidad básica de almacenamiento, los bits o grupos de bits para el caso de las RAM 1S y, los nucleótidos o grupos de nucleótidos para el caso de nuestra memoria IAM. Estas memorias pueden integrarse en los sistemas o dispositivos actuales que demandan memoria, por la simple razón que se pueden fabricar con semiconductores e integrarse en un circuito mediante micro-tecnología o nano-tecnología. Debido a esto estas memorias también se pueden agrupar en módulos 21 con diferentes conectores . Estos conectores varían respecto a los dispositivos o placas electrónicas donde estuvieran conectadas las memorias. De esta forma se creara con esta estructura una memoria genética inorgánica basada en la estructura que posee la misma naturaleza, por esta razón, el acceso de memoria es mucho más interesante acceder a hebras completas que a un par de nucleótidos concretos, debido esencialmente por la forma de unión, separación, etc, de la propia naturaleza del ADN orgánico. Como se puede observar en la figura 15, el sistema de memoria está formado por cadenas de ADN inorgánico 12, que su vez están formadas por dos hebras, una principal y otra complementaria. Estas hebras de la memoria se dividen en nucleótidos, que representan las unidades básicas 1 de almacenamiento de estas memorias. Así de este modo, cuando queramos localizar un nucleótido o grupo de nucleótidos, primero debemos de localizar la cadena de ADN inorgánico, para luego determinar en qué hebra esta la información, para más tarde establecer que nucleótido o nucleótidos dentro de la hebra queremos acceder. En la figura 13 se muestra un esquema de una de estas unidades TnChroSil, la cual contiene dos nucleótidos, que son complementarios. Finalmente indicar, que debido a sus características genéticas se podrían utilizar estas memorias (IAM) , para el cálculo de operaciones intermedias o finales, pero siempre de carácter temporal, como es el caso del cálculo del trayectorias o resolución de grafos ponderados (caminos hamiltonianos, disjktra, euler, etc.), aunque podría ser ampliado a cualquier tipo de información que necesite de información mediante codificación genética, es decir, mediante la representación de cadenas de ADN. Una segunda memoria se ha implementado para la invención son las memorias no volátiles, la cuales se denominan en la invención JnChroSil Read OnIy Memory (IROM) . Este tipo de memorias no volátiles, la información que contiene es de sólo lectura y al igual que las memorias IAM, descritas anteriormente, su unidad básica de almacenamiento son los nucleótidos, por lo tanto, su acceso es estructurado como en las IAM.
Las memorias no volátiles tiene la peculiaridad de que son memorias que sólo son de lectura. Las memorias IROM o memorias de sólo lectura con JnChroSil al igual que las memorias IAM explicadas anteriormente, poseen la misma estructuración que en la figura 15 y, también la misma estructura de acceso explicada antes para las memorias IAM, factor que la diferencia también de las memorias ROM o no volátiles existentes en la actualidad. Pero esta memoria tiene la propiedad de que su información es sólo de lectura, por lo tanto se puede implementar mediante fusibles u otro sistema que nos permitiera crear la información estática, de tal modo, que cuando se quemará o creará un nucleótido en este sistemas, el método inverso, que se ha descrito en la sección anterior, permite quemar o crear el nucleótido complementario, de este modo, seguiríamos un funcionamiento indicado en la figura 14. En esta figura la referencia 5 representa la información primaria, la referencia 6 la inversión de dicha información primaria, la referencia 7 la información secundaria que se obtiene y la referencia 8 los controles aplicados para conseguir el correcto funcionamiento.
Finalmente indicar, que este tipo de memorias tienen una gran utilidad, debido a que pueden almacenar información que quisiéramos que se mantuviera estática, como por ejemplo, la secuenciación de nuestro ADN orgánico, es decir, existen investigaciones donde intentan guardar el ADN orgánico en algún tubo o dispositivo, pero al ser un material orgánico es difícil de conservar, con la memoria no volátil de la invención se puede almacenar la información de forma permanente e incluso ser accedida desde un ordenador o sistema informático. Otras aplicaciones, podría ser el conformar base de datos de ADN mediante memoria IROM, existen base de datos que almacenan de forma convencional el ADN, mediante software, la memoria de la invención permite el almacenamiento directo de esta información genética. En definitiva, la utilidad o funcionalidad de esta memoria IROM, puede ser muy variada y para diversos fines, dependiendo de la utilidad en que se desee emplear. La configuración descrita permite efectuar la resolución de problemas de rutas, flujos y redes abordándolos desde la perspectiva de la teoría de grafos .
Los problemas de encaminamiento, suelen ser resueltos mediante algoritmos deterministas (tiempo razonable) y, utilizando software, en vez de hardware. Esto hace que los sistemas opten por dispositivos que realizan modelos predictivos, no reales, sobre una posible solución aproximada, es decir, no existe en el mercado, ningún dispositivo que pueda decirle a un distribuidor de bebidas, por ejemplo, cual es el camino por el cual pasaría una única vez por cada bar o restaurante de una ciudad y, de forma óptima. Este problema es irresoluble con los dispositivos que en la actualidad existen, software de rutas, encaminamiento, etc. En cambio, si se pudiera resolver, para la compañía de bebidas y el propio distribuidor, serían unas ganancias y ahorro de tiempo respectivamente. Otro ejemplo, son la detección de averías o anomalías, por parte de las compañías de gas, electricidad, agua y teléfono. Existen en el mercado dispositivos de posicionamiento, mediante PLC, sensores, GIS, GPS, etc. Pero a nivel de localización y encaminamiento, se realiza mediante software, en algunos casos y, en otros es totalmente manual, donde el operario mediante una referencia posicional de la área geográfica, tiene que encontrar la posible avería. Por ese motivo, la utilización de un dispositivo en tiempo real, que determine la posición y, calcule el camino más corto posible hasta llegar al punto de averías, es crucial para los intereses de la compañía, ya que en menos tiempo, puede resolver el problema. También en la organización industrial, donde se podría optimizar, a nivel de producción, la maquinaria de unos procesos y máquinas industriales, ya que lo podríamos representar como en un grafo la información y distribución de la maquinaría de la planta industrial. En definitiva, todo sistema que pueda ser reducido o esquematizado a una representación en forma de grafo, pueden aplicarse técnicas y metodológicas para resolver problemas en este campo, además si se considera que con la codificación del grafo en ADN y con la utilización de la tecnología JnChroSil, se pueden resolver de forma óptima, problemas que anteriormente no podían ser resueltos, además de poseer de un dispositivo que puede ser integrado en los sistemas actuales y, su reutilización es total, como se ha comentado en secciones anteriores . A continuación se tratan tres problemas que son la piedra angular en el cálculo de muchos de los problemas anteriormente mencionados .
• Encontrar la ruta más corta ó más óptima entre dos puntos . • Resolver problemas de los llamados del viajante bajo.
• La obtención de caminos eulerianos.
Encontrar la ruta más corta ó más óptima entre dos puntos.
Un problema típico de teoría de grafo, es encontrar la ruta más corta u óptima desde un punto inicial hasta un punto final. El planteamiento que se presenta a este problema es considerar un grafo dirigido, ponderado (positivo o negativo) y, utilizar las características del ADN, mediante tecnología InChroSil. De este modo, mediante un dispositivo basado en tecnología JnChroSil, se puede encontrar el camino más corto u óptimo. Pongamos un ejemplo, supongamos que se desea resolver el problema de la figura 16 mediante las listas de adyacencias y la teoría de conjunto.
En el grafo de la figura 16 se puede representar como una lista de adyacencias, donde la nomenclatura sería la siguiente; (vértice origen, arista, vértice destino) , por lo tanto, el grafo quedaría de la siguiente forma.
Nodo(s) : { (s,xl,u) , (s,x2,v) }
Nθdo(u): { (u,x3,w) , (u,x7,v) }
Nodo (v): {(v,x5,t)} Nθdo(w) : { (w,x4,v) , (w,x6,t) }
Cabe resaltar que, en la teoría de grafos se define la estructura de datos, lista de adyacencia, como una estructura que permite asociar a cada vértice i del grafo, una lista que contenga todos aquellos vértices j, que sean adyacentes a él. De este modo, se ahorra en espacio en su representación y, además el grafo, se puede representar por medio de un vector de n componentes (si |v|=n), donde cada componente va a ser una lista de adyacencia correspondiente a cada uno de los vértices del grafo. Además, cada elemento de la lista consta de un campo indicando el vértice adyacente. Por otra parte, si el grafo fuera etiquetado, habrá que añadir un segundo campo para mostrar el valor de la etiqueta.
Utilizando la teoría de conjuntos, podríamos formar un conjunto con todos los elementos de las listas de adyacencia, es decir, los elementos (vértice, arista, vértice) . Este conjunto que hemos formado tendría unas premisas que se enumeran a continuación. • Si existen dos elementos pertenecientes al conjunto, tales como ex y e2, se observa que el componente final de βi es igual al componente inicial de e2, ambos elementos reaccionan, creando un nuevo elemento, el cual pertenecerá al conjunto.
• Si existen elementos que pertenecen al conjunto, que contienen componentes que son iniciales y finales, no reaccionan con el resto, debido a que serian ya solución.
• Dos elementos que reaccionen tienen una relación positiva o 1, en cambio dos elementos que no reaccionen tienen una relación negativa o 0.
• Los elementos con componentes iniciales y que pertenecen a las listas de adyacencia, una vez reaccionados no vuelve a reaccionar.
Si se sabe que E es el conjunto de elementos y, C es el conjunto de componentes, podemos decir que la reacción es la siguiente operación:
V xe C I 3 yax, xbz eE tal que yax Λ xbz ≡ yaxbz siendo y, a, x, b e C y yaxbz e E.
En este caso, tenemos un conjunto de elementos pertenecientes a las listas de adyacencias, los cuales los denotaremos como Elemento [i], por lo tanto, el conjunto inicialmente quedaría de la siguiente forma.
Elementol: { (s, xl, u) } Elemento2: { (s, x2, v) }
Elemento3 : { (u, x3, w) }
Elemento4: { (u, x7, v) }
Elementoδ: { (w, x4 , v) }
Elemento6: { (w, x6, t) } Elemento7: { (v, x5 , t) } Con este conjunto inicial, se puede analizar sus elementos y ver cómo podrían cumplir las premisas asociadas al conjunto y, crear nuevos elementos. En este caso, se ve que Elementol reaccionaría con Elemento3 y Elemento4, formando Elementoδ y Elemento9 respectivamente. También se ve que Elemento2 reacciona con Elemento7 para formar Elementólo, el cual es ya solución. Después de esto el conjunto quedaría de la siguiente forma.
Elementol { (s, xl, u) } [no reacciona] premisa 4 Elemento2 { (s, x2, v) } [no reacciona] premisa 4 Elemento3 { (u, x3, w) } Elemento4 { (u, x7, v) } Elemento5 { (w, x4, v) } Elementoβ { (w, x6, t)} Elemento7 { (v, x5, t)} Elementos { (s, xl, u, x3, w) } Elemento9 { (s, xl, u, x7, v) }
ElementolO: {(s, x2 , v, x5 , t) }
En una siguiente ronda, se observa que Elementos puede reaccionar con Elementos formando Elementoll y, que también
Elementos puede reaccionar con Elementoβ para formar Elementol2, finalmente, Elemento9 reacciona con Elemento7 formando Elementol3. En esta ronda el conjunto quedaría.
Elementol: {(s, xl, u) } [no reacciona] premisa 4
Elemento2 : { (s, x2, v) } [no reacciona] premisa 4 Elemento3 : { (u, x3 , w) }
Elemento4 : { (u, x7, v) }
Elementos: { (w, x4 , v) }
Elemento6: { (w, x6, t) }
Elemento7: { (v, x5, t) }
Elementoδ: { (s, xl, u, x3, w) } Elemento9: {(s, xl, u, x7, v) } Elementólo: {(s, x2 , v, x5, t) } Elementoll: {(s, xl, u, x3 , w, x4 , v) } Elementol2 : {(s, xl, u, x3 , w, x6 , t) } Elementol3 : {(s, xl, u, x7, v, x5 , t) }
Observando el conjunto se ve que existe una única reacción, la del Elementoll que reacciona con Elemento7 para formar Elementol4. Con esta última reacción, el conjunto quedaría de la siguiente forma.
Elementol { (s, xl, u) } [no reacciona] premisa 4 Elemento2 { (s, x2 , v) } [no reacciona] premisa 4 Elemento3 { (u, x3, w) } Elemento4 {(u, x7, v)} Elementoδ { (w, x4, v) } Elementoβ {(w, x6, t)} Elemento7 {(v, x5, t)} Elementoδ {(s, xl, u, x3, w) } Elemento9 { (s, xl, u, x7, v) }
Elementólo: { (s, x2, v, x5, t) }
Elementoll: { (s, xl, u, x3 , w, x4 , v) }
Elementol2: { (s, xl, u, x3 , w, x6 , t) }
Elementol3 : { (s, xl, u, x7, v, x5 , t) } Elementol4 : { (s, xl, u, x3 , w, x4 , v, x5, t) }
Se puede ver que los resultados son Elementólo, Elementol2, Elementol3 y finalmente Elementol4 , debido a que poseen componentes iniciales y finales. El funcionamiento del planteamiento anterior, para encontrar las soluciones o caminos, se realiza de forma secuencial. Pero en el circuito de la invención, se realiza de forma paralela, es decir, la invención ha considerado dos conjuntos; el primer conjunto Ci está formado por los elementos que contienen componentes iniciales y los elementos que no contienen componentes finales. El segundo conjunto C2 está formado por los elementos que contienen componentes finales y los elementos que no contienen componentes iniciales. Ambos conjuntos son codificados mediante Cod- InChroSil y, almacenados en sendas hebras 10 respectivamente. Estas hebras unen sus componentes mediante una circuitería que contiene comparadores 9 formando una matriz como se observa en la figura 17 de esta forma reaccionan de forma paralela, obteniendo un conjunto de reacciones codificadas como positivas (1) o negativas (0) . Estas reacciones forman una matriz de 0's y l's. Por lo tanto, existen dos conjuntos Ci y C2, que representan a los dos anteriores conjuntos mencionados y los cuales están codificados en hebras de InChroSil. Por otra parte, tenemos un conjunto Cr que esta formado por las reacciones entre los elementos de los conjunto Ci y C2, de este modo se redefine la reacción como la operación donde si e2 e C2 y ei € Ci, entonces ei1Re2 e Cr, siendo 9? la reacción y los valores que puede tomar son 0 o 1. Como se observa, en la reacción ya no se crea un nuevo elemento que deberá de reaccionar, sino que reaccionan todos a la vez y se indica en una matriz, con un 1 si ha habido reacción o la reacción es positiva y, por el contrario con un cero si no habido reacción o la reacción ha sido negativa. Una vez obtenida la matriz con las reacciones de todos los elementos con todos, se pasa esta información a un buffer y, mediante software o circuitería se le aplica algoritmos de recuperación de caminos, los cuales no tienen un coste muy elevado y de orden polinomial. Si se consideran grafos ponderados, los pesos estarían almacenados en una memoria (Mera-InChroSil u otro tipo de memoria) , por lo tanto, las aristas del grafo anterior contienen la dirección y no el valor del peso, el motivo es por que se pueden utilizar cantidades grandes para los pesos y las direcciones tienen una longitud determinada. Una vez encontrados las aristas del camino, sólo hay que sumar los costes de cada arista, para obtener el coste total del camino. Luego con los costes totales, se pueden ordenar los .caminos según un criterio de ordenación, todo esto se puede realizar mediante circuitería o módulos software, que se conectarían con el dispositivo. Con este circuito se resuelven los problemas planteados en los algoritmos de Dijkstra, Floyd-Warshall y Bellman-Ford, Ford-Fulkenson, al poder considerar costes negativos, etc. La ventaja que presentan estos sistemas es la fácil incorporación a los sistemas hardware existentes, ya que ambos se fundamentan en la electrónica y los circuitos integrados. Por otra parte, resulta una alternativa hardware para los sistemas de cálculo que existen, debido a que con los sistemas software, necesitan de otro entorno (sistema operativo, máquinas virtuales, etc.) para funcionar y, en cambio este dispositivo se conectaría directamente a la circuitería del dispositivo anfitrión.
Resolver el problema del camino Hamiltoniano.
Los sistemas de computación actuales se basan en una tecnología secuencial establecida por John Von Neumann a mediados del siglo pasado. Estos computadores secuenciales son buenos en la solución de problemas matemáticos, pero tienen dificultades en problemas denominados de llave en mano, donde se tiene que buscar todas las posibles soluciones hasta encontrar la solución adecuada. Esto hace que el tiempo de computación de los problemas pase a orden exponencial o logarítmico. Se han intentado paliar estos problemas con la construcción de computadores paralelos que puedan reducir el tiempo de computación. Estas soluciones consumen muchos recursos en comunicaciones y numero de nodos conectados entre sí. Por ese motivo ha mediado de 1994, Adleman presentó una nueva alternativa para programar con ADN orgánico, este sistema orgánico presento un masivo paralelismo en la realización de las operaciones y por tanto en la obtención de los resultados finales, pero con las limitaciones comentadas anteriormente. Diseñó un sistema para resolver el problema del camino Hamiltoniano con programación con ADN orgánico y, por lo tanto demostrar que se podían resolver problemas NP-Completos en un tiempo computacional cercano al polinomial . A partir de este momento nació toda una nueva filosofía de programación con este material orgánico, la cual se denomino computación con ADN o programación molecular. Pero a lo largo de los años y debido a sus características del material, que principalmente es perecedero, los diferentes experimentos para traspasar la tecnología orgánica al mundo comercial fueron infructuosos. Para solucionar estos problemas, en este documento se presenta una solución con tecnología electrónica, en concreto con la tecnología JnChroSil, una propuesta artificial que emula el comportamiento de los sistemas orgánicos. Existen implementaciones paralelas para la solución del problema del camino Hamiltoniano pero necesitan un gran volumen de recursos y comunicaciones entre los nodos conectados. La ventaja que presenta el ADN inorgánico frente a las tecnologías secuenciales es el gran paralelismo en la realización de las operaciones, por ese motivo la invención resuelve de forma electrónica el problema del camino Hamiltoniano. Basándose en las características anteriormente expuestas, se codificó cada ciudad, los caminos y unas secuencias complementarias que servían para unir los caminos con hebras de ADN mediante la codificación expuesta en este documento véase figura 19 donde podemos ver el grafo 11 que representa el problema de Hamilton, donde los vértices están numerados del 0 al 6.
Este problema es de gran dificultad para problemas deterministas con orden polinomial, ya que es un problema NP-Completo, pero se puede formular un algoritmo no determinista para la solución de este problema. El algoritmo no determinista se presenta en las siguientes líneas:
Entradas: Grafo, Vin y Vout
• Se generan de forma aleatoria todos los caminos existentes en el Grafo. • Se eliminan todos los caminos que cumpla con las entradas .
• También se eliminan todos aquellos caminos que no posean los vértices requeridos .
• Para cada vértice, se rechazan los caminos que no incluyan al propio vértice.
Salidas: SI (Existen caminos) NO (en caso contrario)
Por lo tanto en un ordenador convencional el tiempo de computación no puede ser polinomial, ya que se tiene que comparar todas las ciudades una por una para encontrar el camino desde una ciudad inicial Vin hasta una ciudad final
Vouf
El dispositivo electrónico que se explica a continuación, se planteó a partir del grafo de 7 vértices
11 de la figura 19. En ella se representa un grafo dirigido que poseerá un número determinado de aristas. El primer paso es la codificación de grafo de la figura 19 para ello se utilizó la codificación Cod- InChroSil (explicado en este documento) y se estableció que cada ciudad (vértice) tuviera un determinado número de nucleótidos, por ejemplo, 20 nucleótidos, y que las aristas estén compuestas por el mismo número, 20 nucleótidos, los cuales se corresponden con los 10 nucleótido últimos de un vértice o ciudad origen y los 10 nucleótidos iniciales del vértice o ciudad destino. Por lo tanto, utilizando la tecnología InChroSil se creará una hebra en la cual se albergarán todas las aristas representadas en dicho grafo. Por otro lado, la hebra debe de poder codificar todas las aristas de un grafo completo de 7 vértices 11, por lo tanto, para dar versatilidad al experimento, dicha hebra ofrecería la posibilidad, que en el peor de los casos comparar un grafo completo (un Grafo completo es en Teoría de grafos, en un grafo cuyo conjunto de aristas contiene todas las aristas posibles, G= (V, VxV) , siendo V el conjunto que contiene todos los vértices del grafo) y, en el mejor de los casos, por ejemplo, el grafo expuesto en la figura 19. Esto permite al programador del circuito electrónico que realice la codificación, elegir tantas aristas como desease dentro del rango establecido por el propio grafo, es decir, para el grafo del ejemplo, existirá una hebra de 5040 pares nucleótidos (factorial de 7 si se consideran 7 ciudades) , de tal modo que, el programador solo exigirá la activación de la parte complementaria de la hebra en las aristas necesarias para el grafo a analizar. En este caso, solo se exigirá complementariedad con las partes de la hebra que correspondiesen a los estados que poseen arista del grafo de la figura 19. Por otra parte, a la codificación del grafo de la figura 19, se la denomina 1G1 17 (Grafo) y que puede ver en la figura 20, en la que AO,
Al representan las aristas del grafo que une a los estados (Ei), y en la que EO, El son los estados o las ciudades del problema planteado.
De forma gráfica se puede ver en la figura 21 como están conectados los estados mediante aristas y en la figura 22 se detalla esta codificación utilizando cod- inchrosil. En la figura 21 un estado está formado por 20 nucleótidos y una arista se compone de los 10 nucleótidos finales de un estado y los 10 nucleótidos iniciales del estado siguiente. El siguiente paso, consiste en poder disponer de todos los posibles caminos hamiltonianos existentes en un grafo de 7 vértices completo, por lo que se creó un conjunto de 5040 cadenas de ADN, por supuesto con la tecnología InChroSil, estas hebras estarán compuestas por 140 pares de nucleótidos (puestos que existen 7 vértices y cada uno de ellos debe estar representado por 20 pares de nucleótidos, se exigiría una longitud de hebra de la multiplicación de 7 por 20) . Estas hebras se dispusieron de forma matricial porque resultaba más cómodo para poder plantear un chip tridimensional, y seguir en la línea de poder emular la naturaleza orgánica. A esta codificación, de igual modo que con el grafo ejemplo, se denominó 'CG1 18 (Conjunto de Grafos) . La teoría de conjuntos se utiliza especialmente para delimitar el alcance de una proposición, lo que fuerza al objeto de la proposición a quedar en cierta medida concretizado. Esto es deseable pues permite operar con la proposición formada, al principio como mínimo a nivel de cierto o falso y en un nivel máximo, de acuerdo a como corresponda la parametrización de las proposiciones establecidas, es decir un conjunto S está definido si, dado un objeto cualquiera α, se sabe con seguridad si pertenece o no al conjunto. Por lo que, esta teoría aplicada a este proyecto, permite comparar cada arista de 1CG1 de la figura 23 de un conjunto de hebras; que representan a todas las combinaciones posibles de los estados,- con cada arista especificada en el grafo 1G1 de la figura 20, de forma totalmente paralela, y determinando de este modo si dicha arista del grafo 1CG' pertenece o no al conjunto de aristas codificadas en el grafo 1G', por tanto las aristas del grafo 1G' se convierten en conjuntos y a su vez las aristas del grafo 'CG' se convierten en objetos de los cuales se debe saber con seguridad si pertenecían o no al conjunto expuesto por el programador, es decir, al grafo 1G', ya que 1CG1 son plantillas de posibles soluciones. Para poder realizar estas comparaciones, se aprovechó la filosofía de los semisumadores lógicos, sumadores sin propagación de acarreo (CSA) y árboles de Wallace. Estas tecnologías ampliamente reconocidas en el campo de la estructura de computadores, ofrecieron la posibilidad de crear modificaciones en los diseños para obtener el paralelismo exigido por el problema y de este modo obtener los resultados deseados. Por otra parte, como se observa en la figura 24, se puede apreciar la estructura interna de un semisumador lógico estándar.
Una modificación que se presenta en este documento es la eliminación del acarreo quedando solo la suma directa de las dos entradas, si se tiene en consideración la tabla de verdad de una puerta XOR, se puede apreciar que si los dos bits son iguales el resultado lógico es 0, por lo que en este proyecto se optó por negar dicha salida de este modo se trabajaría con lógica directa y no inversa. Debido a este planteamiento se desarrollo comparadores 12 mediante puertas XNOR 12a para la solución del problema. Por otro lado, el hecho de juntar 40 puertas XNOR 12a (puesto que, las aristas son de 20 pares nucleótidos, esto supone 40 bits por cada arista y por tanto 80 entradas, ya que se comparará dos a dos) , surgió de la idea de poder crear CSA (sumador sin programación de acarreo, el cual permite realizar sumas obteniendo como resultado la suma de los datos y el acarreo) , es decir la unión de puertas XNOR 12a dando un resultado único de 40 bits.
Pero estas puertas ofrecían un resultado de 40 bits, lo cual no era óptimo, por lo que se plantearon las siguientes preguntas ¿son todos los bits iguales? ¿Son la misma arista?, para ello se utilizo una puerta AND 12b de 40 entradas y 1 solo bit de respuesta, obteniendo en un solo dato la contestación a nuestras preguntas. Ya que si esta puerta AND 12b, da como resultado lógico un 1I1, significa que son iguales las aristas y, por tanto dicha arista perteneciente al grafo 1CG1, y por lo tanto pertenecía al conjunto de aristas perteneciente al grafo 1G1. En caso contrario, si el valor es 1O1, significa que las aristas mencionadas no son iguales, pero no garantizan que no pertenecieran al conjunto programado, lo cual era un dato a resolver. Por tanto, se creó al igual que los CSA, un encapsulamiento del circuito, creando de este modo el comparador 12 mostrado en la figura 25.
Para poder resolver este problema, los comparadores 12 se establecen creando una matriz y comparando las aristas 13 y 14, dos a dos, de ambos grafos (1G1 y 1CG1) de forma paralela. Pero surge una nueva cuestión, ¿Cómo establecer si es camino o no?, para poder dar respuesta a esta pregunta se plantearon los ya conocidos árboles de Wallace, aunque no se utilizó su estructura si su filosofía de funcionamiento, la cual es crear diferentes niveles de exigencia para poder encontrar de forma totalmente paralela el resultado requerido.
Por lo tanto, se planteó que si se exigía que cada comparador en columnas de dicha matriz de comparadores, su resultado 12 de igualdad se dirigiera hacia una puerta OR 15, de tal modo, si cualquiera de los comparadores respondiese un 'I1 lógico, dicha puerta lógica 15 correspondiente a la columna, confirmaría de forma paralela la pertenencia de dicha arista al conjunto de las aristas programadas. De este modo se crean los mencionados niveles de los árboles de Wallace. Por último, todas estas puertas lógicas OR 15, que en este caso son tantas como columnas o aristas existentes en las hebras de ADN JnChroSil, pertenecientes al grafo 1CG1, es decir, 6 puertas lógicas OR 15. De este modo si todas las aristas confirman la pertenencias al conjunto representan un camino Hamiltoniano, esto se consigue dirigiendo todas las salidas hacia una puerta lógica AND 16, de esta forma se obtien definitivamente la respuesta ansiada, se ha creado así el último nivel de exigencias.
Finalmente, el resultado de la puerta AND 16 se almacena en un vector de Resultados no representado, de tal modo que este vector tendrán 5040, es decir, tantas como hebras de ADN InChroSil, han sido codificadas, por lo que las posiciones en las que se vea reflejado un 1I' lógico, reflejaría que la hebra codificada en dicha posición del vector es camino Hamiltoniano del grafo presentado, en la figura 26 en la que se muestra un esquema simplificado del circuito, y en la figura 27 podemos ver el circuito completo.
Resolver problemas de los llamados del viajante bajo.
El problema del viajante (traveling salesman problem TSP) , es uno de los problemas más famosos y mejor estudiados en el campo de la optimización computacional . A pesar de la aparente sencillez de sus planteamiento, el problema es uno de los más difíciles de resolver, debido a que es considerado de complejidad NP-Completo. La invención resuelve el problema del viajante con un sistema electrónico (sección anterior) , con un coste temporal del orden polinomial. En este sistema se tiene un grafo ponderado y dirigido, donde se obtienen todos los caminos hamiltonianos existentes en el grafo. Por lo tanto, en el caso más favorable, sólo existía un camino, pero en el caso contrario o polo opuesto, en el caso desfavorable, es decir, cuando se tiene un grafo completo, podemos tener todos los caminos hamiltonianos. Como ya se comentó anteriormente, el cálculo de todos los caminos se realizan de forma paralela, pero lo que no contemplaba el circuito de la sección anterior era el peso de las aristas, para resolver los problemas de Hamilton ponderado. La idea que se plantea en este documento para dar solución a los problemas de Hamilton ponderado, es sencilla. Utilizando la misma infraestructura electrónica prevista para el cálculo de los caminos hamiltonianos, pero además teniendo en cuenta dos implementaciones; la primera implementación en la figura 28 es transferir esta información (caminos encontrados) a un sistema software 23, 26 que determina la correspondencia entre peso-arista. Este sistema, una vez obtenido el coste individual, calcula el coste total de cada camino. Para finalmente, cuando estén calculados todos los costes de todos los caminos hamiltonianos, ordenarlos según un determinado criterio (de menor a mayor, de mayor a menor, etc.) . Todas estas operaciones se tiene que tener en cuenta que la información esta codificada en Cod- JnChroSil y, que la asignación de pesos a las aristas y posterior cálculo de costes, no es un trabajo costoso a nivel computacional, ya que tiene tiempos polinomiales . Por último, el usuario o un sistema tendrá una colección de caminos ordenados, y entonces dependerá de esté, para la elección del mejor camino. En esta figura 28, la referencia 21 representa el circuito de obtención del camino Hamiltoniano, la 22 el interface de conexión con interface 25 de un módulo de tratamiento de datos 23, la referencia 24 es una base de datos y la 26 un módulo de cálculo de costes y ordenación. La referencia 27 representa un dispositivo externo de demanda de datos.
Por otra parte en la base de datos de la invención están almacenados los datos intermedios, es decir los pesos de las aristas, etc. Por lo que sirve de apoyo a los cálculos que se van a realizar o realizados.
Otra implementación se muestra en la figura 29, es la utilización de memorias 28 (Mein- JnChroSil u otro tipo de memoria) , la idea es que cuando se codifiquen los vértices JnChroSil y, por lo tanto se establezca el valor de las aristas que los unen, el sistema almacenara en esa dirección de memoria (valor de la arista) , el valor del peso de esa arista en el grafo, es decir, se almacena en la arista no su valor o peso, sino la dirección de memoria donde está su valor, debido a que este valor puede ser un número muy grande y las direcciones tienen un tamaño establecido. Cuando se determinen los caminos hamiltonianos, mediante el circuito 21 anterior, se busca el valor de las aristas en la memoria 28, ya que como sabemos su dirección, sabremos su valor. Estos costes se sumaran y buscaran por mediación de circuitería, es decir un bus 32 y sumadores 30, para obtener el coste total de cada camino que puede ser almacenado en la memoria 28 con direcciones consecutivas. Al igual que en la anterior implementación, el usuario o el sistema que recibe de entrada esta información elige con que camino se queda, mediante criterios de elección, ajenos a los dispositivos descritos en este documento. En este ejemplo la referencia 22 representa el interface de conexión con un interface 25a del módulo de tratamiento de datos 23a, la referencia 29 el módulo de ordenación, la 31 un interface de conexión del módulo 23a con un dispositivo externo de demanda de datos 27.
Finalmente, indicar que también se pueden resolver problemas de ciclos hamiltonianos, para lo que habría que considerar la premisa que el vértice de salida es igual al vértice destino.
La Obtención de caminos eulerianos
Los caminos eulerianos son aquellos caminos que recorren todos los vértices de un grafo pasando una sola vez por cada arista del grafo, siendo una de las condiciones fundamentales que regrese al vértice inicial o de salida, por lo tanto, un camino euleriano es un ciclo que contiene todas las aristas de un grafo una sola vez. Este problema fue planteado y resuelto por el propio Leonhard Euler en 1736 en un problema que tiene el nombre de los siete puentes de la ciudad de Kónigsberg. El problema se enuncia de la siguiente forma: Dos islas en el río Pregel, en Kónigsberg se unen entre ellas y con la tierra firme mediante siete puentes. ¿Es posible dar un paseo empezando por una cualquiera de las cuatro partes de tierra firme, cruzando cada uno de los puentes una sola vez?. Euler enfocó el problema representando cada parte de tierra por un punto y cada puente, por una línea, uniendo los puntos que se corresponden. Entonces, el problema anterior se puede trasladar a la siguiente pregunta: ¿se puede recorrer la representación sin repetir las líneas?, euler demostró que no era posible puesto que el número de líneas que inciden en cada punto no es par (condición necesaria para entrar y salir de cada punto) . Por lo tanto, este problema plantea preguntas como las siguientes; ¿Cómo se puede recorrer el cable de esta red eléctrica sin repetir tramos de red?, ¿Cómo se puede realizar este recorrido, pasando por unas calles concretas?, etc.
Como se ha visto, existe una complejidad en la resolución de estos problemas, por ese motivo se podría plantear el problema de forma inversa, es decir, lo que eran vértices se convierten en aristas y, las aristas se convierten en vértices. Con esta conversión, podemos aplicar o calcular los caminos hamiltonianos, puesto que ahora los vértices representan las aristas y, se quiere saber que secuencia de vértices debemos de seguir para poder pasar por todas las aristas. Supongamos el grafo dirigido y no ponderado de la figura 18, el cual sería un multigrafo, es decir, un autómata no determinista.
También se puede representar el grafo de la figura 18 de la siguiente forma, donde V1 es el conjunto de vértices y, Ei es el conjunto de aristas. G1=(F1E1) siendo V1 = (vi,v2#v3) y E1 = U1, a2, a3 , a4, a5/ a6)
Además, tenemos las siguientes uniones de vértices, por medio de aristas;
U={ (V1, V2, ai) , (v1,v2/a2) , (Vi,v2,a3) , (v2,v3,a4) , (v2,v3,a5) , (v2,v3/ a6) , (v3,v1,a6) }
Donde la nomenclatura utilizada para estas uniones es
(vértice origen, vértice destino, arista) . Si se realiza la inversión comentada y, se consideran las aristas como vértices y, los vértices como aristas, el grafo que se obtendría es el siguiente.
G2= (V2 / E2) siendo V2 = (aα , a2 / a3 , a4 , a5 , a6) y E2 =
( (V1, V2) , (V2 ,V3) , (V3, Vi) )
Además, se tienen las siguientes uniones de vértices, por medio de aristas,-
W = {(ai, vi, v2, v2, v3, a4) }
Por lo tanto el grafo tendrá la forma que se muestra en la figura 18. Por consiguiente si se obtiene el camino hamiltoniano del anterior grafo G2, se puede afirmar que existe una solución o camino euleriano G1. También si se considera que el grafo es ponderado, se puede calcular el coste total de cada uno de los caminos y, por lo tanto ordenarlos por coste, aunque los caminos eulerianos no poseen peso, podrían plantearse nuevos problemas de optimización en los caminos eulerianos. En conclusión, si existe camino hamiltoniano en el grafo G2, se puede afirmar que existe un camino euleriano en el grafo G1. Por último, se puede afirmar que se pueden resolver ciclos eulerianos, para lo cual, en la codificación de la base de hebras o bancos de hebras, se establecía que el nodo inicial fuese el mismo que el final. De este modo, mediante la invención se pueden resolver problemas de ciclos.

Claims

REIVINDICACIONES
1.- SISTEMA ELECTRÓNICO DE EMULACIÓN DE LA CADENA DE
LA ESTRUCTURA DE "ADN" DE UN CROMOSOMA, cuya cadena comprende dos hebras, cada una de ellas constituidas por una cadena de nucleótidos, que comprenden Adenina (A) ,
Guanina (G) , Citosina (C) y Timina (T) ; de manera que entre dichas hebras se producen enlaces complementarios que se realizan mediante la unión de Adenina (A) con la Timina
(T) y de la Guanina (G) con la Citosina (C) ; se caracteriza porque comprende medios de codificación binaria de los diferentes cuatro tipos de nucleótidos que componen las hebras, de manera que a los nucleótidos que forman enlaces complementarios se les asignan códigos complementarios mediante la inversión de uno de ellos; e incluyendo unidades de almacenamiento de un código de un nucleótido y selectivamente de un código seleccionado entre su código complementario y ningún código; para obtener un nucleótido y selectivamente su complementario; conectándose dichas unidades de almacenamiento en serie, para formar la cadena de nucleótidos que constituyen cada hebra de una cadena de "ADN" , y así obtener su estructura electrónica y permitir el acceso selectivo a un nucleótido y selectivamente a su complementario, a una hebra y a las dos hebras de la cadena "ADN" .
2.- SISTEMA ELECTRÓNICO DE EMULACIÓN DE LA CADENA DE LA ESTRUCTURA DE "ADN" DE UN CROMOSOMA, según reivindicación 1, caracterizado porque se prevén diferentes módulos, cada uno constituido por agrupaciones de unidades de almacenamiento, en las que, en cada módulo se almacena una cadena de "ADN", estando los módulos conectados en filas y columnas para acceder a cada cadena de "ADN" mediante selección de filas o columnas.
3.- SISTEMA ELECTRÓNICO DE EMULACIÓN DE LA CADENA DE LA ESTRUCTURA DE "ADN" DE UN CROMOSOMA, según reivindicaciones 1 ó 2, caracterizado porque el código binario asignado a cada nucleótido comprende dos bits y su almacenamiento depende de las entradas aplicadas a cada unidad de almacenamiento.
4.- SISTEMA ELECTRÓNICO DE EMULACIÓN DE LA CADENA DE LA ESTRUCTURA DE "ADN" DE UN CROMOSOMA, según reivindicaciones 1, 2 ó 3, caracterizado porque comprende medios de codificación de numeración en base 4 compuestos por los cuatro nucleótidos del "ADN" .
5.- SISTEMA ELECTRÓNICO DE EMULACIÓN DE LA CADENA DE LA ESTRUCTURA DE "ADN" DE UN CROMOSOMA, según reivindicación 4, caracterizado porque los dos bits correspondientes a cada nucleótido adquieren las cantidades decimales de 0 a 3, para conformar una pluralidad de representaciones numéricas determinadas por la posición de los dos bits y por el valor que reciben.
6.- SISTEMA ELECTRÓNICO DE EMULACIÓN DE LA CADENA DE LA ESTRUCTURA DE "ADN" DE UN CROMOSOMA, según reivindicación 5, caracterizado porque comprende medios para realizar operaciones seleccionadas entre sumas, restas, multiplicaciones y divisiones; y comprende codificar cualquier número en coma fija o flotante de simple y doble precisión.
7. - SISTEMA ELECTRÓNICO DE EMULACIÓN DE LA CADENA DE LA ESTRUCTURA DE "ADN" DE UN CROMOSOMA, según reivindicación 1, caracterizado porque las unidades de almacenamiento están seleccionadas entre memorias volátiles (IAM) y no volátiles (IROM) .
8.- SISTEMA ELECTRÓNICO DE EMULACIÓN DE LA CADENA DE LA ESTRUCTURA DE "ADN" DE UN CROMOSOMA, según reivindicaciones 2 y 7, caracterizado porque comprende medios de acceso estructurado mediante la localización de una cadena de "ADN" , posterior localización de una hebra y posterior designación selectiva de un nucleótido o grupo de nucleótidos.
9.- SISTEMA ELECTRÓNICO DE EMULACIÓN DE LA CADENA DE LA ESTRUCTURA DE "ADN" DE UN CROMOSOMA, según reivindicaciones anteriores, caracterizado porque comprende medios para codificar en las unidades de almacenamiento que forman hebras, representaciones de problemas mediante grafos que comprenden elementos constituidos por vértices y aristas y selectivamente peso (dirección) ; para codificar en una hebra un primer conjunto que contiene elementos del grafo constituidos por vértices y aristas correspondientes a elementos iniciales y los correspondientes a los elementos que no contienen elementos finales; y en la hebra complementaria se codifica un segundo conjunto que contiene elementos del grafo constituidos por elementos finales y los correspondientes a los elementos que no contienen elementos finales; estando cada unidad de almacenamiento de ambas hebras unidas entre sí mediante comparadores que forman una matriz para realizar paralelamente las comparación entre todos los elementos de ambos conjuntos y resolver problemas que puedan representarse mediante grafos.
10.- SISTEMA ELECTRÓNICO DE EMULACIÓN DE LA CADENA DE LA ESTRUCTURA DE "ADN" DE UN CROMOSOMA, según reivindicación 9, caracterizado porque los comparadores que forman una matriz están conectados a un buffer al que se aplican medios de recuperación de caminos de orden polinomial para determinar la ruta más óptima entre dos puntos del grafo.
11.- SISTEMA ELECTRÓNICO DE EMULACIÓN DE LA CADENA DE LA ESTRUCTURA DE 11ADN" DE UN CROMOSOMA, según reivindicación 10, caracterizado porque comprende medios adicionales de almacenamiento del peso de una arista, medios para sumar los pesos de cada arista y obtener los pesos totales de cada arista, y medios de ordenación de los pesos totales de cada arista, según criterios previamente establecidos para resolver problemas de algoritmos convencionales seleccionados entre Dijkstra Floyd-Warshall, Bellman-Ford y Ford-Fulkenson.
12. - SISTEMA ELECTRÓNICO DE EMULACIÓN DE LA CADENA DE LA ESTRUCTURA DE "ADN" DE UN CROMOSOMA, según reivindicación 9, caracterizado porque se aplica en problemas de flujo seleccionados entre flotas de vehículos, optimización de procesos industriales, flujos de trabajo, problemas de acoplamientos y de redes de comunicaciones.
13. - SISTEMA ELECTRÓNICO DE EMULACIÓN DE LA CADENA DE LA ESTRUCTURA DE "ADN" DE UN CROMOSOMA, según reivindicación 9, caracterizado porque comprende medios para codificar un problema del camino hamiltoniano en unidades de almacenamiento que constituyen dos hebras, en una de las cuales se codifica el grafo completo y en las complementarias el grafo completo con restricciones conocidas; estando las hebras conectadas a comparadores formando una matriz para comparar las aristas de ambos grafos dos a dos de forma paralela para indicar si los dos bits del resultado de cada comparación son todos iguales y se refieren a una misma arista y en consecuencia ésta pertenece a ambos grafos ; aplicándose al resultado de la comparación a medios para crear niveles del árbol de Wallace indicativo de si la arista es camino o no lo es.
14.- SISTEMA ELECTRÓNICO DE EMULACIÓN DE LA CADENA DE LA ESTRUCTURA DE "ADN" DE UN CROMOSOMA, según reivindicación 13, caracterizado porque los comparadores que comparan las aristas dos a dos, comprenden semisumadores lógicos sin acarreo, cuya salida está conectada a una puerta lógica de detección de un solo bits del resultado de la comparación para obtener un solo dato.
15.- SISTEMA ELECTRÓNICO DE EMULACIÓN DE LA CADENA DE LA ESTRUCTURA DE "ADN" DE UN CROMOSOMA, según reivindicación 14, caracterizado porque los medios para crear niveles del árbol de Wallace comprenden unas primeras puertas lógicas por cada columna de la unidad de comparadores, que representa el grafo completo, y conectada a sus salidas, para confirmar la pertenencia de dicha arista del grafo con restricciones, indicando si es o no camino .
16.- SISTEMA ELECTRÓNICO DE EMULACIÓN DE LA CADENA DE LA ESTRUCTURA DE "ADN" DE UN CROMOSOMA, según reivindicación 14, caracterizado porque las salidas de las primeras puertas lógicas están conectadas a una segunda puerta lógica de detección de si todas las aristas son camino, determinando el camino hamiltoniano, e incluyendo medios de almacenamiento del resultado obtenido.
17. - SISTEMA ELECTRÓNICO DE EMULACIÓN DE LA CADENA DE LA ESTRUCTURA DE "ADN" DE UN CROMOSOMA, según reivindicaciones 3 y 16, caracterizado porque comprende medios para recibir los caminos encontrados y establecer en correspondencia entre peso y arista y obtener los pesos de cada camino, e incluyendo medios de ordenación de los pesos de los caminos según criterios previamente establecidos, para la elección del mejor camino.
18.- SISTEMA ELECTRÓNICO DE EMULACIÓN DE LA CADENA DE LA ESTRUCTURA DE "ADN" DE UN CROMOSOMA, según reivindicación 15, caracterizado porque comprende memorias adicionales de almacenamiento del peso de las aristas para establecer la correspondencia entre peso y arista, mediante el almacenamiento de la dirección de memoria referente a la codificación de los vértices, sumándose los pesos para obtener los totales de cada camino que se almacena en las memorias adicionales con direcciones consecutivas, y mediante medios de ordenación de los pesos de los caminos, según criterios previamente establecidos, establece la elección del mejor camino.
19.- SISTEMA ELECTRÓNICO DE EMULACIÓN DE LA CADENA DE LA ESTRUCTURA DE "ADN" DE UN CROMOSOMA, según reivindicación 18, caracterizado porque se aplica a la resolución de problemas de ciclos hamiltonianos mediante codificación indicativa de que el vértice de salida del grafo es igual al vértice destino.
20.- SISTEMA ELECTRÓNICO DE EMULACIÓN DE LA CADENA DE LA ESTRUCTURA DE "ADN" DE UN CROMOSOMA, según reivindicación 9, caracterizado porque comprende medios para codificar un grafo de manera que los vértices representan las aristas y las aristas a los vértices, y así obtener la secuencia de vértices que se deben seguir para pasar por todas las aristas y permitir resolver el problema del camino euleriano.
21.- SISTEMA ELECTRÓNICO DE EMULACIÓN DE LA CADENA DE LA ESTRUCTURA DE "ADN" DE UN CROMOSOMA, según reivindicación 20, caracterizado porque comprenden medios para establecer codificación del peso de las aristas y plantear nuevos problemas de optimización en los caminos eulerianos .
22.- SISTEMA ELECTRÓNICO DE EMULACIÓN DE LA CADENA DE LA ESTRUCTURA DE "ADN" DE UN CROMOSOMA, según reivindicaciones 20 ó 21, caracterizado porque comprende medios para codificar en las hebras que el vértice inicial es el mismo que el vértice final para resolver ciclos eulerianos .
PCT/ES2007/000478 2007-08-02 2007-08-02 Sistema electrónico de emulación de la cadena de la estructura de 'adn' de un cromosoma WO2009022024A1 (es)

Priority Applications (6)

Application Number Priority Date Filing Date Title
PCT/ES2007/000478 WO2009022024A1 (es) 2007-08-02 2007-08-02 Sistema electrónico de emulación de la cadena de la estructura de 'adn' de un cromosoma
JP2010518700A JP2010535370A (ja) 2007-08-02 2007-08-02 染色体の「dna」構造の鎖をエミュレートする電子システム
CN2007801009069A CN102084380A (zh) 2007-08-02 2007-08-02 仿真染色体“dna”结构链的电子系统
EP07822886A EP2180434A4 (en) 2007-08-02 2007-08-02 ELECTRONIC SYSTEM FOR EMULATING THE CHAIN OF THE STRUCTURE OF DNA FROM A CHROMOSOME
US11/992,057 US20100268520A1 (en) 2007-08-02 2007-08-02 Electronic System to Emulate the Chain of the "DNA" Structure of a Chromosome
IL194065A IL194065A0 (en) 2007-08-02 2008-09-14 Electronic system to emulate the chain of the " dna" structure of a chromosome

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/ES2007/000478 WO2009022024A1 (es) 2007-08-02 2007-08-02 Sistema electrónico de emulación de la cadena de la estructura de 'adn' de un cromosoma

Publications (1)

Publication Number Publication Date
WO2009022024A1 true WO2009022024A1 (es) 2009-02-19

Family

ID=40350412

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/ES2007/000478 WO2009022024A1 (es) 2007-08-02 2007-08-02 Sistema electrónico de emulación de la cadena de la estructura de 'adn' de un cromosoma

Country Status (6)

Country Link
US (1) US20100268520A1 (es)
EP (1) EP2180434A4 (es)
JP (1) JP2010535370A (es)
CN (1) CN102084380A (es)
IL (1) IL194065A0 (es)
WO (1) WO2009022024A1 (es)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109447251A (zh) * 2018-09-28 2019-03-08 电子科技大学 一种具有新型内存模块的神经图灵机模型及其设置方法
WO2020003028A1 (es) * 2018-06-25 2020-01-02 Universidad Antonio Nariño Método para el diagnóstico, desarrollo e incremento acelerado de la inteligencia deportiva o de juego

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10020826B2 (en) * 2014-04-02 2018-07-10 International Business Machines Corporation Generating molecular encoding information for data storage
CN105550535B (zh) * 2015-12-03 2017-12-26 人和未来生物科技(长沙)有限公司 一种基因字符序列快速编码为二进制序列的编码方法
US11386979B2 (en) * 2016-10-11 2022-07-12 Genomsys Sa Method and system for storing and accessing bioinformatics data
US10432639B1 (en) * 2017-05-04 2019-10-01 Amazon Technologies, Inc. Security management for graph analytics

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2071924A1 (fr) * 1969-12-19 1971-09-24 Ibm Mémoire à plusieurs positions accessibles simultanément

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5724253A (en) * 1996-03-26 1998-03-03 International Business Machines Corporation System and method for searching data vectors such as genomes for specified template vector
US7176482B1 (en) * 2000-11-28 2007-02-13 Ramot At Tel-Aviv University DNA-based electronics
US7065510B2 (en) * 2001-11-09 2006-06-20 Hewlett-Packard Development Company, L.P. Combinatorial fitness function circuit
US20040001371A1 (en) * 2002-06-26 2004-01-01 The Arizona Board Of Regents On Behalf Of The University Of Arizona Information storage and retrieval device using macromolecules as storage media
US6983274B2 (en) * 2002-09-23 2006-01-03 Aaron Thomas Patzer Multiple alignment genome sequence matching processor
US20040162794A1 (en) * 2003-02-14 2004-08-19 Shackleford J. Barry Storage method and apparatus for genetic algorithm analysis
CN1960333A (zh) * 2006-11-16 2007-05-09 武汉理工大学 一种基于DNA计算的Ad Hoc网络QoS路由方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2071924A1 (fr) * 1969-12-19 1971-09-24 Ibm Mémoire à plusieurs positions accessibles simultanément

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
"Quaternary numeral system.", ENGLISH WIKIPEDIA., 16 May 2007 (2007-05-16), Retrieved from the Internet <URL:http:// en.wikipedia.org/w/index.php?title= Quaternary_numeral_system&oldid=131196098> [retrieved on 20080422] *
ADLEMAN, L.M.: "Molecular Computation of Solutions to Combinatorial Problems.", SCIENCE , NEW SERIES., vol. 266, no. 5187, 11 October 1994 (1994-10-11), pages 1021 - 1024, XP055177527, DOI: doi:10.1126/science.7973651 *
See also references of EP2180434A4 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020003028A1 (es) * 2018-06-25 2020-01-02 Universidad Antonio Nariño Método para el diagnóstico, desarrollo e incremento acelerado de la inteligencia deportiva o de juego
CN109447251A (zh) * 2018-09-28 2019-03-08 电子科技大学 一种具有新型内存模块的神经图灵机模型及其设置方法
CN109447251B (zh) * 2018-09-28 2021-09-24 电子科技大学 一种具有新型内存模块的神经图灵机模型及其设置方法

Also Published As

Publication number Publication date
EP2180434A1 (en) 2010-04-28
EP2180434A4 (en) 2011-07-06
US20100268520A1 (en) 2010-10-21
JP2010535370A (ja) 2010-11-18
CN102084380A (zh) 2011-06-01
IL194065A0 (en) 2009-11-18

Similar Documents

Publication Publication Date Title
Bollobás Modern graph theory
WO2009022024A1 (es) Sistema electrónico de emulación de la cadena de la estructura de &#39;adn&#39; de un cromosoma
Kaveh Optimal analysis of structures by concepts of symmetry and regularity
Provan The complexity of reliability computations in planar and acyclic graphs
Rockafellar Network flows and monotropic optimization
Hsieh et al. Panconnectivity and edge-pancyclicity of 3-ary n-cubes
CN110807931A (zh) 基于转向关系的交通路网有向图路径模型构建及求解方法
Kaya Markov–Dubins interpolating curves
Agrawal et al. Connecting the dots (with minimum crossings)
Kohring Calculation of the permeability of porous media using hydrodynamic cellular automata
Hliněný Contact graphs of line segments are NP-complete
de Los Santos et al. Construction of a spanning tree for high‐order edge elements
Kaveh et al. Introduction to graph theory and algebraic graph theory
Grötschel Developments in combinatorial optimization
Tseng An improved harmony search for travelling salesman problem
Gruau et al. The Blob: A Basic Topological Concept for “Hardware-Free” Distributed Computation
Arnaldo et al. Fast and scalable temperature-driven floorplan design in 3D MPSoCs
Brazil et al. Steiner Trees with Other Cost Functions and Constraints
Cheng et al. Approximate shortest homotopic paths in weighted regions
Godsil et al. Knots and Eulerian Cycles
Yadav Resistance Distance, Kirchhoff Index, Foster's Theorems, and Generalizations
Binham et al. Reachability in a planar subdivision with direction constraints
Rahmati et al. A Study on Non-overlapping Multi-agent Pathfinding
Wu et al. An algorithm for splitting arbitrary polygon
Mathew et al. Graphs and Weighted Graphs

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 200780100906.9

Country of ref document: CN

WWE Wipo information: entry into national phase

Ref document number: 11992057

Country of ref document: US

WWE Wipo information: entry into national phase

Ref document number: 194065

Country of ref document: IL

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 07822886

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2010518700

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 2007822886

Country of ref document: EP